我从MySQL Performance Blog读取,根据查询的选择性,全表扫描可能比索引扫描更快。考虑到这些知识,我根据我之前的post在一个包含5百万行的表格上实验了一个包含12个WHERE
条件和一个HAVING
条件的查询。我观察到全表扫描仍然比具有4列索引( 160秒)的索引扫描快得多( 7.7sec ),选择性为3%(161341 / 5000000)。
我的问题是:“为什么索引扫描的3%选择性仍然比全表扫描慢20倍?有没有办法让索引扫描速度更快?”
答案 0 :(得分:1)
具有四列索引的索引扫描
索引中列的顺序会对性能产生影响。将最具选择性的列放在索引中的第一位。它还取决于您的查询。带'x LIKE '%foo%'
的WHERE子句不会有效使用索引,但'x LIKE 'foo%'
会更有效。