![]() | 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 ![]() 和数据量跟内容会有关系,涉及到优化器的东西,比如表太小直接就顺序查找,不走索引 |
10 eslizn 2018-07-14 09:12:50 +08:00 不存在的,看看你的 Extra |
11 Raymon111111 2018-07-14 20:34:58 +08:00 ![]() 区分度的问题 比如你数据库里几乎所有的数据都 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 查询优化器会根据数据量判断要不要用索引 |