1
zooo OP 执行结果:后一条,查询到了数据,没有使用索引,而前一条使用没有查询到数据,使用了索引。
|
2
haiyang416 2018-07-14 07:29:12 +08:00 via Android
看样子是覆盖索引相关的内容,需要确认两条查询里都是 last_name ?
|
3
zooo OP @haiyang416 刚看了下,书上 说 : 如果一个索引包含(或者说覆盖)所有需要查询的字段的值,就称为覆盖索引。
但我这里 查询 * 还包括了 gerder 字段,那就应该不是覆盖索引了吧? |
4
haiyang416 2018-07-14 07:48:45 +08:00 via Android
@zooo 我的意思是检查下两条查询条件是不是都是 last_name,有没有 first_name,看是不是左前匹配。覆盖索引是说书的章节,估计记错了,请忽略。
|
5
pathbox 2018-07-14 08:40:42 +08:00 via iPhone
你数据是怎样的没有说
|
7
zooo OP @haiyang416 查询条件都是 WHERE last_name
|
8
glacer 2018-07-14 09:04:11 +08:00 via iPhone
应该是你的数据里没有 A 开头的,我记得要是没有命中索引的数据,执行计划是显示全表的。
|
9
carlclone 2018-07-14 09:08:21 +08:00 via Android 1
和数据量跟内容会有关系,涉及到优化器的东西,比如表太小直接就顺序查找,不走索引
|
10
eslizn 2018-07-14 09:12:50 +08:00
不存在的,看看你的 Extra
|
11
Raymon111111 2018-07-14 20:34:58 +08:00 1
区分度的问题
比如你数据库里几乎所有的数据都 A****, 那走不走 A 这个索引对查询几乎毫无帮助, 那么就会直接判定不走这个索引了 |
12
zooo OP |
13
Raymon111111 2018-07-14 21:05:51 +08:00
@zooo 数据太少了, 至少几万再想索引的事吧
|
14
zooo OP @Raymon111111 嗯
|
15
zooo OP 谢谢各位回答
|
16
xiaoxlm 2018-07-15 17:47:27 +08:00
查询优化器会根据数据量判断要不要用索引
|