mysql in or索引失效_mysql 查询使用 in 索引失效的问题?

表中的数据是这样的:

mysql> select * from tbl_student;

+----+----------+----------+---------------------+

| id | name | class_id | create_time |

+----+----------+----------+---------------------+

| 1 | James | 1 | 2018-01-21 13:54:50 |

| 2 | Wade | 1 | 2018-01-21 13:55:02 |

| 3 | Bosh | 1 | 2018-01-21 14:04:45 |

| 4 | Paul | 1 | 2018-01-21 14:04:54 |

| 5 | kobe | 1 | 2018-01-21 14:05:14 |

| 6 | Rooney | 2 | 2018-01-21 15:02:06 |

| 7 | Pogeba | 2 | 2018-01-21 15:02:20 |

| 8 | Martia | 2 | 2018-01-21 15:47:47 |

| 9 | Lingard | 2 | 2018-01-21 15:48:15 |

| 10 | Simeone | 2 | 2018-01-21 15:48:28 |

| 11 | Messi | 2 | 2018-01-21 15:48:36 |

| 12 | Tina | 2 | 2018-01-21 15:49:04 |

| 13 | Manu | 2 | 2018-01-21 15:55:29 |

| 14 | Iversion | 1 | 2018-01-21 15:55:44 |

| 15 | Mata | 1 | 2018-01-21 15:56:12 |

+----+----------+----------+---------------------+

15 rows in set (0.00 sec)

给字段 name 建立了索引

mysql> explain select * from tbl_student where name in ('Pogeba', 'Rooney');

+----+-------------+-------------+------------+-------+---------------+------+---------+------+------+----------+-----------------------+

| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |

+----+-------------+-------------+------------+-------+---------------+------+---------+------+------+----------+-----------------------+

| 1 | SIMPLE | tbl_student | NULL | range | name | name | 51 | NULL | 2 | 100.00 | Using index condition |

+----+-------------+-------------+------------+-------+---------------+------+---------+------+------+----------+-----------------------+

1 row in set, 1 warning (0.00 sec)

当 in 有两个值的时候索引有效

mysql> explain select * from tbl_student where name in ('Pogeba', 'Rooney', 'Paul');

+----+-------------+-------------+------------+------+---------------+------+---------+------+------+----------+-------------+

| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |

+----+-------------+-------------+------------+------+---------------+------+---------+------+------+----------+-------------+

| 1 | SIMPLE | tbl_student | NULL | ALL | name | NULL | NULL | NULL | 15 | 20.00 | Using where |

+----+-------------+-------------+------------+------+---------------+------+---------+------+------+----------+-------------+

1 row in set, 1 warning (0.01 sec)

当 in 里面有三个值的时候索引就失效了,这是为什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值