数据库索引(Index)【未完待续】
2024-10-19 06:17:32
数据库索引是啥?有什么用?原理是什么?最佳实践什么?
索引是啥
一个索引是这样的数据结构:从数据上来说,不仅包含了从表中某一列或多列的数据拷贝,同时,还包含了指向这列数据行的链接;
从结构上来说,索引中的数据还被组织成满足一定查找算法的数据结构,比如B树。这样提高了从数据库的查询效率。
有什么用
创建索引可以提高数据的查询性能(improve speed of data retrieval operation)。具体来说:
第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因(直接根据链接找而不是逐行扫描数据内容)。
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
还具有监控数据库约束条件的作用,比如唯一索引。
建立索引的代价
根据上述的描述,可以知道,增加索引必然增加数据库存储空间的开销,同时在建立和修改索引时也要比没有索引多花额外的时间。
索引类型与索引方法
待添加。。。
最佳实践
指导思原则:修改性能和检索性能是相互矛盾的,当建立索引的弊大于利时,不要建索引。
应该建索引的情形
- 经常需要搜索的列上,可以加快搜索;
- 在经常连接的列上,可以加快连接;
- 在经常需要根据范围搜索的列上,索引已经排序,根据排好序的索引去找范围更快;
- 在经常需要排序的列上创建索引,索引已经排序,可以加快排序
不该建索引的情形
- 查询中很少使用的列上;
- 只有很少数据值的列上,因为数值值少,建了索引效果不明显,比如值只有0和1的情形;
- 某些数据类型如text,image等数据量大的列,建立和维护索引的开销大,作用却小。
未完待续。。。
参考文章:
【1】Database index -- Wikipedia.
【1】数据库索引的实现原理 by 辉仔
最新文章
- 直接拿来用,最火的.NET开源项目
- mysql中,主键与普通索引
- Silverlight动画之 Animation Easing
- aChartEngine图表显示(一页显示多张图表)
- speechSynthesis
- Eclipse Java 调试基本技巧
- 利用crontab自动更新SVN代码
- python 循环
- 转:python中函数curry化
- 安德鲁斯Selector简介
- YiShop_网上商城系统多少钱
- Hadoop 进程配置总结
- ffmpeg安装
- NATS—基础介绍
- python3新特点
- Ext.ux.grid.feature.Searching 解析查询参数,动态产生linq lambda表达式
- Java 面向对象之static,final,匿名对象,内部类,包,修饰符
- mockito使用
- Day24-图片验证码----待续
- win7+iis7+asp+.net+php环境配置
热门文章
- 手动实现一个简易版SpringMvc
- Educational Codeforces Round 6 A
- ACM1004 Let the balloons fly
- (转)史上最好的Python线程指南
- centos中mysql的安装
- Lucene6.6添加索引数据时字符个数超限,字符数不能超过BYTE_BLOCK_SIZE=32766
- LightOJ 1097 - Lucky Number 线段树
- [洛谷P3763] [TJOI2017]DNA
- 如何查看由EF生成的SQL?
- Eclipse代码报错提示: the import java.util cannot be resolve,怎么解决?