• 数据库的索引


    索引列数量:

    单列索引和组合索引

    组合索引有最左原则:关于最左原则有太多话要说了,网上大部分的说法都很旧,5.7之后的有了索引下推,导致很多情况下索引都会生效。

    创建组合索引  index(a,b,c)
    where a=3    只使⽤了a
    where a=3 and b=5    使⽤了a,b
    where a=3 and b=5 and c=4    使⽤了a,b,c
    where a=3 and c=5 and b=4    使⽤了a,b,c (可能是sql执行时自动优化,把B和C条件位置对调了)
    where a=3 and c=4    使⽤了a  和索引下推
    where a=3 and b>10 and c=7  使⽤了a 和  索引下推
    where a=3 and b like 'xx%' and c=7    使⽤了a  和索引下推

    where a=3  or a=3   只使⽤了a (sql执行会自动优化成一个条件)

    where a=3 or a=4    索引下推

    数据库索引类型:

    主键索引:唯一 非空  有即为聚簇索引

    普通索引:

    唯一索引:可空

    空间索引:GIS空间数据,通过R树来实现,使得空间搜索变得高效

    全文索引(fulltext index):

    聚簇索引和非聚簇索引

    聚簇索引

    也就聚集索引,

    一般情况下是主键索引

    如果没有主键索引,mysql会找到第一个唯一索引作为聚簇索引

    如果上述两个都没有, InnoDB 会在包含行 ID 值的合成列上生成一个名为 GEN _ CL UST _ INDEX 的隐藏聚集索引。行由 InnoDB 分配给这样一个表中的行的 ID 排序。行 ID 是一个 6 字节的字段,随着新行的插入,它会单调增加。因此,由行 ID 排序的行实际上是按插入顺序排列的。

    非聚簇索引

    除聚簇索引之外的索引都是非聚簇索引。

    数据结构

    B-tree索引   聚簇索引

    R-tree索引   空间索引

    hash索引  准确来说只是用到了hash算法的索引,例如表A有主键列id  select id from A where A=2;用到的就是hash算法。

  • 相关阅读:
    Vue生命周期
    基于Java的电影院管理系统设计与实现
    阿里妈妈API接口 按关键字或网址搜索商品
    安卓设备文件传输助手 MacDroid pro for mac中文
    css之简介和基础选择器的介绍
    【【C语言的问题解决-3】】
    Linux监测进程cpu使用率、内存使用率的工具 - WGCLOUD
    双十一好物推荐指南:值得买的数码好物
    海光信息科创板上市:市值139​7亿 技术源于AMD授权
    Say Goodbye to OOM Crashes
  • 原文地址:https://blog.csdn.net/nimqbiyq/article/details/125605065