MYSQL之索引

    技术2023-05-07  73

    1.索引

    ​ 索引是帮助MySql高效获取数据的排好序的数据结构

    ​ 索引是存储在文件里的

    索引结构:

    二叉树

    - **普通二叉树** 左子树的节点 < 父节点 右子树的节点 > 父节点

    - 平衡二叉树

    当插入数据的数据是有序时,二叉树会形成单链表结构,因此因与了平衡二叉树

    - **多路平衡查找树(balanced tree B tree)即B树** 由于每一次磁盘I/O默认读取的数据大小为16K,而二叉树每一次分叉查找就是一次磁盘I/O.如果一个节点存储的数据比较小,会造成磁盘空间的浪费.因此引入了多路平衡查找树

    HASH

    1.hash只支持等值检索,不支持大于/小于等检索

    2.存在重复值的列,使用hash算法会产生hash碰撞

    B+树(加强版多路平衡查找树)

    - B Tree能解决的问题,B+Tree都能解决 - 扫库,扫表能力更强 - 磁盘读写能力更强 - 排序能力更强 - 效率更加稳定
    索引类型
    普通索引主键索引全文索引唯一索引(允许存在一个null)聚集索引:据定了数据物理存放顺序的索引(只有主键是聚集索引)

    搜索引擎

    INNODB

    在INNODB搜索引擎中,数据是存放在主键索引的叶子节点中.

    MYISAM

    MYISAM中,数据与索引式分开的,表锁,不支持事务

    索引不生效
    在索引列使用函数或者表达式,计算字符串不加引号,出现隐式转换like条件前面带%(最左前缀)负向查询:NOT LIKE ,!= , <> ,NOT IN
    Processed: 0.017, SQL: 9