【发布时间】:2012-12-11 13:53:18
【问题描述】:
我第一次开始深入研究索引,并第一次从用户表开始分析我们的数据库。我搜索了 SO 以找到一个类似的问题,但我猜无法很好地构建我的搜索。
我正在经历一个特定的概念,第一次观察让我想知道 - 这些解释的区别[区别:第一个查询使用 'a%',而第二个查询使用 'ab%']
[users 表中的总行数 = 9193]:
1) explain select * from users where email_address like 'a%';
(实际匹配的列 = 1240)
2) explain select * from users where email_address like 'ab%';
(实际匹配的列 = 109)
索引如下所示:
我的问题:
为什么在第一个查询中完全忽略索引? mySql 是否认为不使用case 1 中的索引更好?如果是,为什么?
【问题讨论】:
-
问题中提到了一些有趣的点。但是,i)如答案之一中所述,30% 规则无效。 ii) 默认dev.mysql.com/doc/refman/5.0/en/… 显然非常高(我没有更改数据库中的任何默认值)。这个问题中提到的观点绝对是正确的方向。我仍在寻找确切的原因。也许我应该更多地谷歌。
-
如果 30% 规则实际上是一个取决于表格大小的滑动比例,我不会感到惊讶。一张只有 9K 行的表,不是很大,使用索引可能节省不了多少。
标签: mysql select indexing explain