【发布时间】:2017-08-09 13:35:51
【问题描述】:
我有一个包含 150k 行数据的表,我有一个带有 UNIQUE INDEX 的列,它的类型为 VARCHAR(10) 并存储 10 位数的帐号。
现在每当我查询时,就像一个简单的:
SELECT * FROM table WHERE account_number LIKE '0103%'
结果超过 30,000 行,当我对查询运行 EXPLAIN 时,它显示没有使用 INDEX。
但是当我这样做时:
SELECT * FROM table WHERE account_number LIKE '0104%'
它产生 4,000+ 行,使用了 INDEX。
谁能解释一下?
I'm using MySQL 5.7 Percona XtraDB.
【问题讨论】:
-
30k+/150k> 20% 我猜做表扫描会更快。 -
为什么使用 4k 行索引?但它小于 30k。
-
Why with 4k rows, index is still not being used?vsIt results 4,000+ ROWS, with the INDEX used.请决定 -
因此,如果数据库引擎知道查询何时匹配 x 条目,它无论如何都必须遍历索引,那么为什么不直接使用它而不是在使用索引后进行全表扫描!?对我来说没有意义,但我不确定 percona 是如何工作的。
-
对不起,我提醒
is used