zoukankan      html  css  js  c++  java
  • Mysql学习笔记整理之索引

    索引的概念:

    索引是一个分散存储的数据结构(检索)对数据库表中一列或多列的值进行排序

    为什么要用索引?

    1. 索引能极大的减少存储引擎需要扫描的数据量
    2. 索引可以把随机IO变成顺序IO
    3. 索引可以帮助我们进行分组,排序操作时,避免使用临时表

    聚集索引:

    数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同

    辅助索引末尾指向主键索引,然后通过主键索引找值

    如果innodb没有建索引,默认会创建一个隐式主键索引 6bit

    只要是索引是连续的,那么数据在存储介质上的存储位置也是连续的

     

    联合索引

    例如创建的索引是    [name,phone]

    1. 经常用的列优先 [最左匹配原则]
    2. 选择性高的优先 [离散度高原则 ]
    3. 宽度小的列优先 [最少空间原则]

    列的离散型:

     count(distinct column):count(column)

    比例越大离散性越好,离散性越好选择性越好

    最左匹配原则 

    对索引中关键字进行计算,一定是从左往右一次进行,且不可跳过

    覆盖索引:

    如果查询列克通过索引节点中的关键字直接返回,可减少数据库IO,将随机IO变为顺 IO,提高查询

    索引的规范:

    1. 索引列的数据长度能少则少。
    2. 索引一定不是越多越好,越全越好,一定建合适的,字段不要太大, 比如phoneNum是11位即可
    3. 建索引,不允许该字段为空
    4. 匹配到前缀可用到索引Like 999%
    5. Where条件中Not in和 <>无法使用索引
    6. 匹配范围值,order by 也可以用到索引
    7. 多用指定列查询,只返回自己想要的数据列,少用select *

     

     

     

     

  • 相关阅读:
    01、MySQL_简介
    算法—打擂台法
    第10章 对文件的输入输出
    第9章 用户自己建立数据类型
    Spring Cloud
    JUC
    Swagger Learing
    JUC
    Spring Data
    SpringCloud
  • 原文地址:https://www.cnblogs.com/weijianxing/p/11586703.html
Copyright © 2011-2022 走看看