我有一张桌子,我已经添加了几个复合键:
CREATE INDEX idx_foo on my_table(col_one, col_two, col_three);
CREATE INDEX idx_bar on my_table(col_one, col_four, col_three);
为什么当我在以下查询中使用EXPLAIN
时,MySQL是否告诉我它使用不太合适的idx_bar
密钥?
SELECT col_one, col_two, col_three, col_four FROM my_table
WHERE col_one = 'a'
AND col_two = 1
AND col_three = 1
返回:
'1', 'SIMPLE', 'my_table','ref','IDX_E93438563DAE168B,idx_foo,idx_bar','idx_bar','767','const','6688','Using index condition; Using where'
我是否过高估计了MySQL的匹配引擎,还是我犯了错误?是使用FORCE INDEX
的唯一解决方案吗?
答案 0 :(得分:1)
等待!你说col_one
是独一无二的吗?然后使用col_one
任何索引开始将在 one 中找到答案!
所以,这就是它选择'错误'指数的原因:它更小。