zoukankan      html  css  js  c++  java
  • mysql 几种索引的复习(温故而知新)

    explain执行计划包含的信息

     

    type 访问类型,sql查询优化中一个很重要的指标,结果值从好到坏依次是:
    system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
    一般来说,好的sql查询至少达到range级别,最好能达到ref

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

     和 左连接 右连接一样

     -- ref:非唯一性索引扫描,返回匹配某个单独值的所有行。本质是也是一种索引访问,它返回所有匹配某个单独值的行,然而他可能会找到多个符合条件的行,所以它应该属于查找和扫描的混合体

    io表共三个索引

    走的是索引查找

     

    一个device_id有很多条记录

      

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

    一个最简单的查询 花费了3秒多 随着数据量的增加 ALL花费的时间越来越大

    -- range:只检索给定范围的行,使用一个索引来选择行。key列显示使用了那个索引。一般就是在where语句中出现了bettween、<、>、in等的查询。这种索引列上的范围扫描比全索引扫描要好。只需要开始于某个点,结束于另一个点,不用扫描全部索引 

    未给signal_strength字段加索引前 如下

     

     给signal_strength字段加索引后 如下

     

     存在一种情况 实际使用的索引,如果为NULL,则没有使用索引 如下

    -73 -74 -75 都有值 不存在null 走索引

     -73 到 80 之间 存在null 此时不走索引 走全表扫描

    -- index:Full Index Scan,index与ALL区别为index类型只遍历索引树。这通常比ALL快,因为索引文件通常比数据文件小。(Index与ALL虽然都是读全表,但index是从索引中读取,而ALL是从硬盘读取)

    io表共三个索引 测试一个查索引列 一个不查索引列

     查询索引列

     不查索引列

  • 相关阅读:
    Jmeter_完成文件批量下载
    Jmeter_文件的下载
    Jmeter_针对一个账户批量上传文件
    Jmeter上传文件操作
    Jmeter_获取结果写到excel
    Jmeter_接口串联自动化测试_登录后充值获取cookie
    JS 对象(Object)和字符串(String)互转
    全国图书馆参考咨询联盟关闭文献传递功能解决办法
    Geodesic Distance:两点间的最短距离之法截弧/等角航线/测地线
    空间数据库基础理论 GIS空间数据处理分析涉及的基本概念
  • 原文地址:https://www.cnblogs.com/s6-b/p/12123509.html
Copyright © 2011-2022 走看看