zoukankan      html  css  js  c++  java
  • [MySQL] 利用explain查看sql语句中使用的哪个索引

    字段类型是:
    `enterpriseId` int(10) unsigned DEFAULT NULL,
    `email` char(255) NOT NULL DEFAULT '',
    表的索引是:
    UNIQUE KEY `emailent` (`email`,`enterpriseId`),
    KEY `edf` (`enterpriseId`,`departId`,`flag`),

    有这么两条sql语句,分别表现是:

    explain select email from email where enterpriseId=23684 and (email like 'aaa%');
    +----+-------------+-------+------+---------------+------+---------+-------+------+-------------+
    | id | select_type | table | type | possible_keys | key  | key_len | ref   | rows | Extra       |
    +----+-------------+-------+------+---------------+------+---------+-------+------+-------------+
    |  1 | SIMPLE      | email | ref  | emailent,edf  | edf  | 5       | const |    6 | Using where |


    看到key_len的长度是5 ,可以知道使用的是edf这个索引 , 因为edf索引中的enterpriseId是int类型4个字节 ,默认null 加1个字节,总共5个字节
    也就是先使用enterpriseId查到索引,在索引中使用where过滤数据

    explain select email from email where enterpriseId=23684 and (email like 'aaas%');
    +----+-------------+-------+-------+---------------+----------+---------+------+------+--------------------------+
    | id | select_type | table | type  | possible_keys | key      | key_len | ref  | rows | Extra                    |
    +----+-------------+-------+-------+---------------+----------+---------+------+------+--------------------------+
    |  1 | SIMPLE      | email | range | emailent,edf  | emailent | 770     | NULL |    2 | Using where; Using index |
    +----+-------------+-------+-------+---------------+----------+---------+------+------+--------------------------+


    在like的时候比上面多了一个字符,这个时候的索引情况是key_len是770,可以知道使用的是emailent这个索引,因为这个的索引长度是
    255*3+5=770 varchar是255个字符,utf8下是*3, 加上int 5个字节

    like两边都有%的情况,只会使用第一个条件的edf索引

    mysql> explain select * from email where enterpriseId=23684 and (email like '%shihanasas%');
    +----+-------------+-------+------+---------------+------+---------+-------+------+-------------+
    | id | select_type | table | type | possible_keys | key  | key_len | ref   | rows | Extra       |
    +----+-------------+-------+------+---------------+------+---------+-------+------+-------------+
    |  1 | SIMPLE      | email | ref  | edf           | edf  | 5       | const |    6 | Using where |
    +----+-------------+-------+------+---------------+------+---------+-------+------+-------------+
  • 相关阅读:
    从零开始系统深入学习android(实践让我们开始写代码Android框架学习7.App Widgets)
    用才智征服天下,用信誉赢得未来
    微众时代看网络营销
    营销不是传奇,欠的只是方法
    名扬天下,从这里出发
    【缅怀妈妈系列诗歌】之二十六:贺诞母亲
    营销密码,带你走进神奇地带
    打造“80后”第一营销品牌
    如果有一天
    把你写进诗里
  • 原文地址:https://www.cnblogs.com/taoshihan/p/13667943.html
Copyright © 2011-2022 走看看