zoukankan      html  css  js  c++  java
  • 数据库索引(Index)【未完待续】

    数据库索引是啥?有什么用?原理是什么?最佳实践什么?

    索引是啥

      一个索引是这样的数据结构:从数据上来说,不仅包含了从表中某一列或多列的数据拷贝,同时,还包含了指向这列数据行的链接;

    从结构上来说,索引中的数据还被组织成满足一定查找算法的数据结构,比如B树。这样提高了从数据库的查询效率。

    有什么用

      创建索引可以提高数据的查询性能(improve speed of data retrieval operation)。具体来说:

        第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

        第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因(直接根据链接找而不是逐行扫描数据内容)。

        第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

        第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间

        第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

    还具有监控数据库约束条件的作用,比如唯一索引。

    建立索引的代价

      根据上述的描述,可以知道,增加索引必然增加数据库存储空间的开销,同时在建立和修改索引时也要比没有索引多花额外的时间。

    索引类型与索引方法

    待添加。。。

    最佳实践

      指导思原则:修改性能和检索性能是相互矛盾的,当建立索引的弊大于利时,不要建索引。

    应该建索引的情形

    1. 经常需要搜索的列上,可以加快搜索;
    2. 在经常连接的列上,可以加快连接;
    3. 在经常需要根据范围搜索的列上,索引已经排序,根据排好序的索引去找范围更快;
    4. 在经常需要排序的列上创建索引,索引已经排序,可以加快排序

    不该建索引的情形

    1. 查询中很少使用的列上;
    2. 只有很少数据值的列上,因为数值值少,建了索引效果不明显,比如值只有0和1的情形;
    3. 某些数据类型如text,image等数据量大的列,建立和维护索引的开销大,作用却小。

    未完待续。。。

    参考文章:

    【1】Database index -- Wikipedia.

    【1】数据库索引的实现原理 by 辉仔

  • 相关阅读:
    VUE的生命周期
    ID生成算法(二)
    ID生成算法(一)——雪花算法
    HTTP状态码和支持的方法
    水平居中/垂直居中/水平垂直居中总结
    判断数组类型的4种方法
    WebSocket浅谈
    vue中使用定时器时this指向
    银行转账业务梳理
    支付那些事儿
  • 原文地址:https://www.cnblogs.com/tlz888/p/7064306.html
Copyright © 2011-2022 走看看