zoukankan      html  css  js  c++  java
  • mysql 索引

    mysql索引

    索引结构类型

    1. 聚簇索引
      1. 主键, 叶子节点包含数据行
    2. 非聚簇索引
      1. 索引列, 叶子节点为主键
      2. 使用非聚簇索引时,先通过索引列查询到主键,再通过聚簇索引查询到数据行
      3. 也成为第二索引
    3. 覆盖索引
      1. 如果select语句中的列恰好在索引的叶子节点上,则直接返回,而不用二次查询聚簇索引(当然,如果直接使用聚簇索引,那自然不会发生二次查询)或者去磁盘加载数据

    索引用途类型

    1. 主键
    2. 唯一索引
    3. 外键
    4. FULLTEXT

    索引匹配

    1.?最左匹配原则,即(A,B,C)索引,只能加速查询满足条件为(A), (A,B), (A,B,C)的查询, (A,B,C)是与的情况,而如(A,C)这种条件,就相当于匹配到了(A)的索引
    2. 范围查询 如>,<, <=>, in, between,会导致无法匹配到索引

    参看:https://tech.meituan.com/2014/06/30/mysql-index.html

    执行计划

    1. sql语句经过查询优化器后,会尽可能的匹配索引
    2. 使用explain查看sql语句涉及到的索引和锁定的行数
    3. 使用的索引越多,锁定的行数越少,则说明查询越高效

    性能排查思路

    1. 使用explain查看执行的情况
    2. 如果索引和锁定行没有问题,可以尝试减少限制条件如where, group by, limit等限制行数的条件,进一步查看explain的结果
    3. 如果经过多次裁剪sql语句,仍然没有发现问题,则需要根据具体的业务,来确认场景,重新涉及表结构和查询方式
    4. 如果业务场景是写多读少的情况,则需要慎重使用索引,因为insert, delete,会导致索引重排,从而影响insert,delete的性能,需要综合业务场景,适当做取舍
  • 相关阅读:
    js命名空间笔记
    css3兼容性问题归纳
    flexbox-CSS3弹性盒模型flexbox完整版教程
    JavaScript 预解析
    消除页面上的链接虚线框
    图片压缩之 PNG
    常见的前端优化技巧有哪些
    for-of循环和for-in循环的区别
    函数式编程初探
    js中同步与异步处理方法
  • 原文地址:https://www.cnblogs.com/zhedan/p/12419102.html
Copyright © 2011-2022 走看看