美文网首页
数据库-索引优化--分析执行计划

数据库-索引优化--分析执行计划

作者: c3e1ce81199b | 来源:发表于2019-06-05 23:24 被阅读0次
  1. 分析最基础的sql ---select * from itdragon_order_list where transaction_id = "81X97310V32236260E";
mysql> select * from itdragon_order_list where transaction_id = "81X97310V32236260E";
+-------+--------------------+-------+------+----------+--------------+----------+------------------+-------------+-------------+------------+---------------------+
| id    | transaction_id     | gross | net  | stock_id | order_status | descript | finance_descript | create_type | order_level | input_user | input_date          |
+-------+--------------------+-------+------+----------+--------------+----------+------------------+-------------+-------------+------------+---------------------+
| 10000 | 81X97310V32236260E |   6.6 | 6.13 |        1 |           10 | ok       | ok               | auto        |           1 | itdragon   | 2017-08-18 17:01:49 |
+-------+--------------------+-------+------+----------+--------------+----------+------------------+-------------+-------------+------------+---------------------+

mysql> explain select * from itdragon_order_list where transaction_id = "81X97310V32236260E";
+----+-------------+---------------------+------------+------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table               | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra       |
+----+-------------+---------------------+------------+------+---------------+------+---------+------+------+----------+-------------+
|  1 | SIMPLE      | itdragon_order_list | NULL       | ALL  | NULL          | NULL | NULL    | NULL |    3 |    33.33 | Using where |
+----+-------------+---------------------+------------+------+---------------+------+---------+------+------+----------+-------------+

几个重要的参数

  • select_type : 查询类型是简单查询,简单的select语句没有union和子查询。
  • type : 连接类型,all表示采用全表扫描的方式。

type--这是一个非常重要的参数,连接类型,常见的有:all , index , range , ref , eq_ref , const , system , null 八个级别。性能从最优到最差的排序:system > const > eq_ref > ref > range > index > all。

  • possible_keys : 可能用到索引为null。
  • key : 实际用到索引是null。
  • key_len : 索引长度当然也是null。
  • ref : 没有哪个列或者参数和key一起被使用。
  • Extra : 使用了where查询。
  1. 为transaction_id创建索引

mysql> create unique index idx_order_transaID on itdragon_order_list (transaction_id);
mysql> explain select * from itdragon_order_list where transaction_id = "81X97310V32236260E";
+----+-------------+---------------------+------------+-------+--------------------+--------------------+---------+-------+------+----------+-------+
| id | select_type | table               | partitions | type  | possible_keys      | key                | key_len | ref   | rows | filtered | Extra |
+----+-------------+---------------------+------------+-------+--------------------+--------------------+---------+-------+------+----------+-------+
|  1 | SIMPLE      | itdragon_order_list | NULL       | const | idx_order_transaID | idx_order_transaID | 453     | const |    1 |      100 | NULL  |
+----+-------------+---------------------+------------+-------+--------------------+--------------------+---------+-------+------+----------+-------+
  • 唯一索引打印的type值是const。表示通过索引一次就可以找到。即找到值就结束扫描返回查询结果。
  • 普通索引打印的type值是ref。表示非唯一性索引扫描。找到值还要继续扫描,直到将索引文件扫描完为止。
    很显然 constx性能要优于ref

相关文章

  • Mysql 优化提纲

    SQL & 索引 通过慢日志找到待优化的SQLs; explain 查询分析SQL执行计划; 索引优化; 数据库结...

  • Mysql优化系列(一)优化SQL语句

    1 善用执行计划对SQL进行分析,如何没有命中索引,及时优化数据库。 详细分析:https://www.cnblo...

  • Mysql查询优化

    mysql的优化思路: 日志、执行计划、索引、缓存(查询缓存和索引缓存)、SQL优化、分区、分表、分库、修改数据库...

  • mysql数据库 使用分析工具 进行慢查询分析

    优化sql语句步骤:1.发现问题2.分析执行计划3.优化索引4.改写sql(再达不到优化效果的话 进行数据库分库分...

  • MYSQL explain执行计划解读

    Explain 查看SQL语句的执行计划:分析SQL执行计划,优化SQL及索引策略,run faster. ...

  • 数据库复习指南

    索引分析工具:explain 数据库优化。表很大之后,insert变得很慢,如何优化? 缓存; 分库分表; 索引;...

  • 数据库-索引优化--分析执行计划

    分析最基础的sql ---select * from itdragon_order_list where tran...

  • 12)sql优化

    优化sql的一般步骤1.发现问题 -> 分析执行计划 -> 优化索引 -> 改写sql 如以上方法还无法达到满意的...

  • MySQL查询性能优化七种武器之链路追踪

    MySQL优化器可以生成Explain执行计划,我们可以通过执行计划查看是否使用了索引,使用了哪种索引? 但是到底...

  • mysql 使用索引提高查询速度

    当数据库数据量比较大时,使用索引优化查询速度 注意:执行记划只是预估(全表扫描或走索引),能通过执行计划大概评测出...

网友评论

      本文标题:数据库-索引优化--分析执行计划

      本文链接:https://www.haomeiwen.com/subject/dkuexctx.html