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 辉仔

  • 相关阅读:
    Android——继续深造——从安装Android Studio 2.0开始(详)
    PHP——安装wampserver丢失MSVCR110.dll
    Marza Gift for GDC 2016
    Retrieve OpenGL Context from Qt 5.5 on OSX
    Space Time Varying Color Palette
    Screen Space Depth Varying Glow based on Heat Diffusion
    Visualization of Detail Point Set by Local Algebraic Sphere Fitting
    Glass Dragon
    Jump Flood Algorithms for Centroidal Voronoi Tessellation
    京都之行
  • 原文地址:https://www.cnblogs.com/tlz888/p/7064306.html
Copyright © 2011-2022 走看看