码迷,mamicode.com
首页 > 数据库 > 详细

数据库索引调优

时间:2018-09-11 16:15:58      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:ring   查找   over   大致   顺序   情况   lte   动作   ble   

一、索引

1、索引类型

  普通索引:无任何限制的索引
  唯一索引:列值唯一的索引,可以为空值
  主键索引:表的主键,特殊的唯一性索引,不能为空值
  组合索引:多个字段上的索引,遵循左前缀集合
  全文索引:来查找文本中的关键字

2、使用explain+sql语句进行调优

    (1)explain包含的信息包含:技术分享图片

     主要从id、type、key、rows、Extra分析

     (2)id

    表示执行的先后顺序,id值大的先执行,小的后执行,id值相同的从上到下执行

     (3)type

    访问类型,结果值从好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

    建议尽量达到range级别,常见类型介绍如下:

    const:通过索引一次找到,通常用于主键或唯一性索引

    eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键 或 唯一索引扫描。 

    ref:非唯一性索引扫描,返回匹配某个单独值的所有行

    range:只检索给定范围的行,使用一个索引来选择行。key列显示使用了那个索引。一般就是在where语句中出现了bettween、<、>、in等的查询

    index:Index与ALL虽然都是读全表,但index是从索引中读取,而ALL是从硬盘读取

    ALL:Full Table Scan,遍历全表以找到匹配的行 

  (4)key

    实际使用的索引,如果为NULL,则没有使用索引。查询中如果使用了覆盖索引,则该索引仅出现在key列表中 

  (5)rows

    根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数

  (6)Extra

    Using index: 表示相应的select操作中使用了覆盖索引(Covering Index),避免了访问表的数据行,效率高 ,如果同时出现Using where,表明索引被用来执行索引键值的查找,如果没用同时出现Using where,表明索引用来读取数据而非执行查找动作。

 

    

 

数据库索引调优

标签:ring   查找   over   大致   顺序   情况   lte   动作   ble   

原文地址:https://www.cnblogs.com/gis-sky/p/9626796.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!