美文网首页
创建高性能的索引笔记

创建高性能的索引笔记

作者: Volcannozzz | 来源:发表于2018-06-20 18:05 被阅读0次

    B树索引是按顺序组织的,因此适合查找范围数据
    B树索引适合全键值,键值范围和键前缀查找。

    全文索引

    索引的优点
    索引可以让服务器快速地定位到表的指定位置
    索引大大减少了服务器需要扫描的数据量
    索引可以将随机I/O变为顺序I/O

    三星系统原则:

    相关的记录放到一起为一星;索引的数据顺序和查找中的排列顺序一致为一星;覆盖索引为一星;

    索引的使用是相对的:对于非常小的表,大部分的情况下,简单的全表扫描更高效。

    高性能的索引策略

    1. 独立的列

      将建有索引的列单独放在一侧,而不是需要进行某种运算。“独立的列”是指索引列不能是表达式的一部分,也不能是函数的参数。

    2. 前缀索引和索引选择性

      索引选择性越高越好,如果1000个记录,1000个记录的值都不相同是最优的。

      前缀索引的缺点是,无法使用前缀索引进行ORDER BY和GROUP BY,也无法用作覆盖索引。

      另:有时也会需要后缀索引,MYSQL不支持,但是可以通过字符串反转后存储,并基于此进行前缀索引,通过触发器进行维护。

    聚簇索引

    是一种数据存储方式。

    InnoDB通过主键聚集数据。

    如果没有定义主键,InnoDB会选择一个唯一的非空索引代替。如果没有这样的索引,引擎会隐式定义一个主键来作为聚簇索引。

    二级索引可能比想象的要大,因为在二级索引的叶子节点包含了引用行的主键列。

    尽可能按主键顺序插入数据,并且尽可能地使用单调增加的聚簇键的值来插入新行。

    覆盖索引

    在extra列可以看到using index的信息。

    使用索引扫描来做排序

    如果执行计划中的type列为index,说明使用了索引扫描排序。

    排序有两种,通过排序操作,或者按索引顺序扫描。

    应该避免创建重复索引,发现以后也应该立即移除。

    未使用的索引应该删除。

    索引和锁

    索引可让查询锁定更少的行,从而提高并发性能。、

    InnoDB只有在访问行的时候才会对其加锁,而索引可以减少引擎访问的行数,从而减少锁的数量。

    5.1之后的版本中,服务器过滤掉行之后就会释放锁。

    相关文章

      网友评论

          本文标题:创建高性能的索引笔记

          本文链接:https://www.haomeiwen.com/subject/quityftx.html