zoukankan      html  css  js  c++  java
  • 【Mysql优化】索引覆盖

    索引覆盖

      是指 如果查询的列恰好是索引的一部分,那么查询只需要在索引文件上进行,不需要回行到磁盘再找数据.这种查询速度非常快,称为”索引覆盖”,比平时的查询少一次到磁盘读数据的操作。(索引正好覆盖到查询的数据)

    例如下面:

    mysql> use exam9;
    Database changed
    mysql> desc options;
    +----------------+---------------+------+-----+---------+-------+
    | Field          | Type          | Null | Key | Default | Extra |
    +----------------+---------------+------+-----+---------+-------+
    | optionId       | varchar(40)   | NO   | PRI | NULL    |       |
    | questionId     | varchar(40)   | YES  | MUL | NULL    |       |
    | optionContent  | varchar(2000) | YES  |     | NULL    |       |
    | optionWithTag  | varchar(2000) | YES  |     | NULL    |       |
    | optionSequence | varchar(2)    | YES  |     | NULL    |       |
    | isAnswer       | varchar(2)    | YES  |     | NULL    |       |
    | description    | varchar(300)  | YES  |     | NULL    |       |
    +----------------+---------------+------+-----+---------+-------+
    7 rows in set (0.00 sec)
    
    mysql> reset query cache;      #清空缓存
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> set profiling=on;    #打开profiling功能
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> select optioncontent from options where optionid='000406aa1b89461d8cfd85f
    b0e5d9e01';
    +------------------------+
    | optioncontent          |
    +------------------------+
    | 基础工程完毕进行回填后 |
    +------------------------+
    1 row in set (0.03 sec)
    
    mysql> select optionid from options where optionid='000406aa1b89461d8cfd85fb0e5d
    9e01';
    +----------------------------------+
    | optionid                         |
    +----------------------------------+
    | 000406aa1b89461d8cfd85fb0e5d9e01 |
    +----------------------------------+
    1 row in set (0.03 sec)
    
    mysql> show profiles;  #显示概要信息
    +----------+------------+-------------------------------------------------------
    ------------------------------+
    | Query_ID | Duration   | Query
                                  |
    +----------+------------+-------------------------------------------------------
    ------------------------------+
    |        1 | 0.03480675 | select optioncontent from options where optionid='0004
    06aa1b89461d8cfd85fb0e5d9e01' |
    |        2 | 0.03624525 | select optionid from options where optionid='000406aa1
    b89461d8cfd85fb0e5d9e01'      |
    +----------+------------+-------------------------------------------------------
    ------------------------------+
    2 rows in set, 1 warning (0.00 sec)
    
    mysql> explainselect optionid from options where optionid='000406aa1b89461d8cfd8
    5fb0e5d9e01'G
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
    corresponds to your MySQL server version for the right syntax to use near 'expla
    inselect optionid from options where optionid='000406aa1b89461d8cfd85fb0e5d' at
    line 1
    mysql> explain select optionid from options where optionid='000406aa1b89461d8cfd
    85fb0e5d9e01'G    #explain分析语句
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: options
       partitions: NULL
             type: const
    possible_keys: PRIMARY
              key: PRIMARY
          key_len: 122
              ref: const
             rows: 1
         filtered: 100.00
            Extra: Using index  #表示索引覆盖
    1 row in set, 1 warning (0.03 sec)
    
    mysql> explain select optioncontent from options where optionid='000406aa1b89461
    d8cfd85fb0e5d9e01'G    #分析语句
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: options
       partitions: NULL
             type: const
    possible_keys: PRIMARY
              key: PRIMARY
          key_len: 122
              ref: const
             rows: 1
         filtered: 100.00
            Extra: NULL
    1 row in set, 1 warning (0.03 sec)
  • 相关阅读:
    PLSQL查询显示乱码或者问号
    Sonar 扫描C#代码 排除文件
    C# 短日期转换为DateTime
    电脑远程连接不上或者ip的地址一直是169.254
    C#导出CSV或者EXCEL文件转换文本
    Oracle 计算两个日期相差天时分秒
    Linux 做网关
    Python 内置函数
    Python Fileinput 模块
    Python-2.7 配置 tab 自动补全功能
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/8593076.html
Copyright © 2011-2022 走看看