zoukankan      html  css  js  c++  java
  • MySQL 联合索引测试2

    接上一篇文章:

    http://www.cnblogs.com/xiaoit/p/4430300.html

    1:首先删掉上一篇建立的索引,重新建立一个。

    mysql> DROP INDEX idx1 ON tab_index;
    Query OK, 55 rows affected (0.01 sec)
    Records: 55  Duplicates: 0  Warnings: 0
    

      

    mysql> ALTER TABLE tab_index
        -> ADD INDEX idx2(age,dte);
    Query OK, 55 rows affected (0.01 sec)
    Records: 55  Duplicates: 0  Warnings: 0
    

      

    按照上一篇的测试结论应该是:

    (age) 走索引,且索引长度最短
    (age,id)走索引,且索引长度最短

    (age,dte)走索引,且索引长度最长
    (id,age,dte)走索引,且索引长度最长
    (id,dte,age)走索引,且索引长度最长
    (dte,id,age)走索引,且索引长度最长
    (dte,age,id)走索引,且索引长度最长
    (age,dte,id)走索引,且索引长度最长
    (age,id,dte)走索引,且索引长度最长

    重新测试看下:

    mysql> EXPLAIN SELECT id,dte,age
        -> FROM tab_index
        -> WHERE age=31;
    +----+-------------+-----------+------+---------------+------+---------+-------+------+-------------+
    | id | select_type | table     | type | possible_keys | key  | key_len | ref   | rows | Extra       |
    +----+-------------+-----------+------+---------------+------+---------+-------+------+-------------+
    |  1 | SIMPLE      | tab_index | ref  | idx2          | idx2 | 5       | const |    1 | Using where |
    +----+-------------+-----------+------+---------------+------+---------+-------+------+-------------+
    1 row in set (0.01 sec)
    

      

    mysql> EXPLAIN SELECT id,dte,age
        -> FROM tab_index
        -> WHERE age=31 AND id=3;
    +----+-------------+-----------+------+---------------+------+---------+-------+------+-------------+
    | id | select_type | table     | type | possible_keys | key  | key_len | ref   | rows | Extra       |
    +----+-------------+-----------+------+---------------+------+---------+-------+------+-------------+
    |  1 | SIMPLE      | tab_index | ref  | idx2          | idx2 | 5       | const |    1 | Using where |
    +----+-------------+-----------+------+---------------+------+---------+-------+------+-------------+
    1 row in set (0.00 sec)
    

      

    mysql> EXPLAIN SELECT id,dte,age
        -> FROM tab_index
        -> WHERE age=31 AND dte BETWEEN '2011-05-13 00:00:00' AND '2013-05-13 00:00:00' ;
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    | id | select_type | table     | type  | possible_keys | key  | key_len | ref  | rows | Extra       |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    |  1 | SIMPLE      | tab_index | range | idx2          | idx2 | 14      | NULL |    1 | Using where |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    1 row in set (0.00 sec)
    

      

    mysql> EXPLAIN SELECT id,dte,age
        -> FROM tab_index
        -> WHERE id=3 AND dte BETWEEN '2011-05-13 00:00:00' AND '2013-05-13 00:00:00' AND age=31;
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    | id | select_type | table     | type  | possible_keys | key  | key_len | ref  | rows | Extra       |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    |  1 | SIMPLE      | tab_index | range | idx2          | idx2 | 14      | NULL |    1 | Using where |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    1 row in set (0.00 sec)
    

      

    mysql> EXPLAIN SELECT id,dte,age
        -> FROM tab_index
        -> WHERE id=3 AND age=31 AND dte BETWEEN '2011-05-13 00:00:00' AND '2013-05-13 00:00:00';
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    | id | select_type | table     | type  | possible_keys | key  | key_len | ref  | rows | Extra       |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    |  1 | SIMPLE      | tab_index | range | idx2          | idx2 | 14      | NULL |    1 | Using where |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    1 row in set (0.00 sec)
    

      

    mysql> EXPLAIN SELECT id,dte,age
        -> FROM tab_index
        -> WHERE dte BETWEEN '2011-05-13 00:00:00' AND '2013-05-13 00:00:00' AND id=3  AND age=31;
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    | id | select_type | table     | type  | possible_keys | key  | key_len | ref  | rows | Extra       |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    |  1 | SIMPLE      | tab_index | range | idx2          | idx2 | 14      | NULL |    1 | Using where |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    1 row in set (0.00 sec)
    

      

    mysql> EXPLAIN SELECT id,dte,age
        -> FROM tab_index
        -> WHERE dte BETWEEN '2011-05-13 00:00:00' AND '2013-05-13 00:00:00' AND age=31 AND id=3;
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    | id | select_type | table     | type  | possible_keys | key  | key_len | ref  | rows | Extra       |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    |  1 | SIMPLE      | tab_index | range | idx2          | idx2 | 14      | NULL |    1 | Using where |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    1 row in set (0.00 sec)
    

      

    mysql> EXPLAIN SELECT id,dte,age
        -> FROM tab_index
        -> WHERE id=3 AND dte BETWEEN '2011-05-13 00:00:00' AND '2013-05-13 00:00:00' AND age=31;
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    | id | select_type | table     | type  | possible_keys | key  | key_len | ref  | rows | Extra       |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    |  1 | SIMPLE      | tab_index | range | idx2          | idx2 | 14      | NULL |    1 | Using where |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    1 row in set (0.00 sec)
    

      

    mysql> EXPLAIN SELECT id,dte,age
        -> FROM tab_index
        -> WHERE id=3 AND dte BETWEEN '2011-05-13 00:00:00' AND '2013-05-13 00:00:00' AND age=31;
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    | id | select_type | table     | type  | possible_keys | key  | key_len | ref  | rows | Extra       |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    |  1 | SIMPLE      | tab_index | range | idx2          | idx2 | 14      | NULL |    1 | Using where |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    1 row in set (0.00 sec)
    

      

    mysql> EXPLAIN SELECT id,dte,age
        -> FROM tab_index
        -> WHERE age=31 AND id=3 AND dte BETWEEN '2011-05-13 00:00:00' AND '2013-05-13 00:00:00'  ;
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    | id | select_type | table     | type  | possible_keys | key  | key_len | ref  | rows | Extra       |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    |  1 | SIMPLE      | tab_index | range | idx2          | idx2 | 14      | NULL |    1 | Using where |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    1 row in set (0.00 sec)
    

      

    mysql> EXPLAIN SELECT id,dte,age
        -> FROM tab_index
        -> WHERE age=31 AND dte BETWEEN '2011-05-13 00:00:00' AND '2013-05-13 00:00:00' AND id=3 ;
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    | id | select_type | table     | type  | possible_keys | key  | key_len | ref  | rows | Extra       |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    |  1 | SIMPLE      | tab_index | range | idx2          | idx2 | 14      | NULL |    1 | Using where |
    +----+-------------+-----------+-------+---------------+------+---------+------+------+-------------+
    1 row in set (0.00 sec)
    

      

    结论正确!

  • 相关阅读:
    request.setCharacterEncoding("utf-8");
    JSTL的foreach循环遍历
    EL表达式的查找范围
    Unity_图形学之_shader_学习笔记(一)
    Unity_AssetBundle笔记_(一)(俗称AB包_个人笔记欢迎指正)
    Unity C#笔记 协程详解(转)
    解决方案_And_学习链接_笔记
    Unity_一些Unity内部的重要设置
    C#_异常处理
    Unity3D_Resources封装(ResourcesManager 类)
  • 原文地址:https://www.cnblogs.com/xiaoit/p/4430387.html
Copyright © 2011-2022 走看看