【发布时间】:2018-01-18 12:42:20
【问题描述】:
我在 PHP 函数中有以下查询。这会根据多种因素被调用多次,但即使只执行 1 次也需要很长时间。
SELECT `date` as dateTo
FROM table_name tbl
WHERE `colA` = 223 and `colB` <> 1
ORDER BY `date` DESC
LIMIT 1
数据库表有大约 200 万条记录,ORDER BY 正在减慢执行时间。
在这种情况下我能拥有的最好的INDEX 是什么?
date 上的索引是否只会有益,还是我必须包含 colA 和 colB?
-----
我最终使用了这个查询,
SELECT `ColA`,`date`, `ColB`
FROM atm_status_log
WHERE `ColA` = 223
HAVING `ColB` <> 1
ORDER BY `date` DESC
LIMIT 1;
还有这个INDEX、INDEX(colA, colB, date)
【问题讨论】:
-
目前存在什么索引?
-
最佳索引是
INDEX(date, colA, colB)上的多列索引,请注意索引应按照我所说的方式对列进行排序。 -
有多少行会被选中并需要排序?
-
@RiggsFolly 该表按降序排列,因此所有记录都已排序。
-
@RaymondNijland 如果您添加评论作为答案,我会选择它。
标签: php mysql sql indexing phpmyadmin