【发布时间】:2013-08-10 13:00:06
【问题描述】:
我有一个相当大的表,有几百万行:
ID (primary)
countrycode
status
flag_cc
我试过下面的sql语句,但是很慢:
SELECT id, countrycode, status, flag_cc FROM table WHERE ID>=200000 AND countrycode=3 AND status=1 AND flag_cc=0
所以我认为添加索引来固定查询是个好主意:
ADD INDEX myindex(id, countrycode, status, flag_cc)
然后我查询:
EXPLAIN SELECT id, countrycode, status, flag_cc FROM table WHERE ID>=200000 AND countrycode=3 AND status=1 AND flag_cc=0
但是mysql想要使用主键而不是我的键。所以我使用了 FORCE INDEX 并将主键与我的键进行了比较。遗憾的是主键要快得多。
怎么可能?如果主键太慢,是否有可能优化该查询?
【问题讨论】:
-
尝试添加一个没有主键或 3 个单独键的复合键。
-
如果我添加一个没有主键的复合键,它仍然会使用主键..
-
按该顺序尝试索引 (countrycode, status, flag_cc, id)。先找到常量可能会更快。
标签: mysql