• mysql索引


    1. 原理

      通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。

    2. b+数性质

      索引字段尽可能小

      索引的最左匹配(从左到右查找)

     3. 索引分类

      1.普通索引index :加速查找

      2.唯一索引

        主键索引:primary key :加速查找+约束(不为空且唯一)

        唯一索引:unique:加速查找+约束 (唯一)

      3.联合索引

        -primary key(id,name):联合主键索引

        -unique(id,name):联合唯一索引 -index(id,name):联合普通索引

      4.全文索引fulltext :

        用于搜索很长一篇文章的时候,效果最好。

      5.空间索引spatial :

        了解就好,几乎不用

    4. 索引的两大类型hash与btree

      hash类型的索引:查询单条快,范围查询慢 btree类型的索引

      b+树,层数越多,数据量指数级增长(我们就用它,因为innodb默认支持它)

      InnoDB 支持事务,支持行级别锁定,支持 B-tree、Full-text 等索引,不支持 Hash 索引  

      MyISAM 不支持事务,支持表级别锁定,支持 B-tree、Full-text 等索引,不支持 Hash 索引

    5. 正确使用索引

      覆盖索引  select的字段为*,除了id以外还需要其他字段,这就意味着,我们通过索引结构取到id还不够, 还需要利用该id再去找到该id所在行的其他字段值

      最左前缀匹配原则

      尽量选择区分度高的列作为索引(不重复度高)

    6. 无法命中情况

      like '%at'(后百分号可以)  

      使用函数  

      or(当or条件中有未建立索引的列才失效)  

      类型不一致  

      !=(如果是主键,则还是会走索引)

      排序条件为索引,则select字段必须也是索引字段,否则无法命中

      

  • 相关阅读:
    Codeforces Beta Round #69 (Div. 2 Only)
    Codeforces Beta Round #67 (Div. 2)
    Codeforces Beta Round #65 (Div. 2)
    UmBasketella
    Codeforces Beta Round #63 (Div. 2)
    [agc004d]Teleporter
    [arc076f]Exhausted?
    NOIp模拟赛二十八
    CDQ分治笔记
    (noip模拟二十一)【BZOJ2500】幸福的道路-树形DP+单调队列
  • 原文地址:https://www.cnblogs.com/zhaoatian/p/11896252.html
Copyright © 2020-2023  润新知