账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    mysql 查询使用 in 索引失效的问题?
    24
    0

    表中的数据是这样的:

    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 里面有三个值的时候索引就失效了,这是为什么?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部