小编And*_*ndy的帖子

您可以在复合键上使用大于运算符的 WHERE 子句吗?

我是一名 Web 开发人员(不是 DB 管理员!)在处理 MySQL 上的 1.7m 记录表时遇到性能问题。这是那个表:

CREATE TABLE `bbcmapimp_pc_raw` (
  `postcode` char(8) NOT NULL,
  `pc_sector` char(6) DEFAULT NULL,
  `pc_district` char(4) DEFAULT NULL,
  `pc_area` char(2) DEFAULT NULL,
  `parliamentary_constituency_code` char(9) DEFAULT NULL,
  `parliamentary_constituency` varchar(255) DEFAULT NULL,
  `mp_name` varchar(255) DEFAULT NULL,
  `district_code` char(4) DEFAULT NULL,
  `district` varchar(45) DEFAULT NULL,
  `country` varchar(255) DEFAULT NULL,
  `suffix` char(5) DEFAULT NULL,
  PRIMARY KEY (`postcode`),
  KEY `pcc` (`parliamentary_constituency_code`),
  KEY `suffix_index` (`pc_area`,`suffix`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

我只需要迭代表,但在我第一次尝试时,我使用了 OFFSET,这太可怕了!从那以后,我了解了 MySQL 在引擎盖下所做的事情,并理解了为什么它变得越来越慢。

所以,我试图修改我的查询以使用 WHERE 子句,但问题是我按两个字段对查询进行排序(该表定义了一个复合索引)。

一种解决方案是添加一个按正确顺序排列的 ID 字段并使用它;但我想知道是否有任何方法可以在一个大于 …

mysql performance query-performance

4
推荐指数
1
解决办法
2649
查看次数

标签 统计

mysql ×1

performance ×1

query-performance ×1