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

索引是啥

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

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

有什么用

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

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

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

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

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

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

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

建立索引的代价

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

索引类型与索引方法

待添加。。。

最佳实践

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

应该建索引的情形

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

不该建索引的情形

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

未完待续。。。

参考文章:

【1】Database index -- Wikipedia.

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

最新文章

  1. 直接拿来用,最火的.NET开源项目
  2. mysql中,主键与普通索引
  3. Silverlight动画之 Animation Easing
  4. aChartEngine图表显示(一页显示多张图表)
  5. speechSynthesis
  6. Eclipse Java 调试基本技巧
  7. 利用crontab自动更新SVN代码
  8. python 循环
  9. 转:python中函数curry化
  10. 安德鲁斯Selector简介
  11. YiShop_网上商城系统多少钱
  12. Hadoop 进程配置总结
  13. ffmpeg安装
  14. NATS—基础介绍
  15. python3新特点
  16. Ext.ux.grid.feature.Searching 解析查询参数,动态产生linq lambda表达式
  17. Java 面向对象之static,final,匿名对象,内部类,包,修饰符
  18. mockito使用
  19. Day24-图片验证码----待续
  20. win7+iis7+asp+.net+php环境配置

热门文章

  1. 手动实现一个简易版SpringMvc
  2. Educational Codeforces Round 6 A
  3. ACM1004 Let the balloons fly
  4. (转)史上最好的Python线程指南
  5. centos中mysql的安装
  6. Lucene6.6添加索引数据时字符个数超限,字符数不能超过BYTE_BLOCK_SIZE=32766
  7. LightOJ 1097 - Lucky Number 线段树
  8. [洛谷P3763] [TJOI2017]DNA
  9. 如何查看由EF生成的SQL?
  10. Eclipse代码报错提示: the import java.util cannot be resolve,怎么解决?