MySQL没有使用最佳复合密钥

时间:2015-03-24 20:10:57

标签: mysql database performance indexing

我有一张桌子,我已经添加了几个复合键:

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的唯一解决方案吗?

1 个答案:

答案 0 :(得分:1)

等待!你说col_one是独一无二的吗?然后使用col_one 任何索引开始将在 one 中找到答案!

所以,这就是它选择'错误'指数的原因:它更小。