博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server技术问题之索引优缺点
阅读量:5217 次
发布时间:2019-06-14

本文共 937 字,大约阅读时间需要 3 分钟。

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

优点:

  正确的索引会大大提高数据查询、对结果排序、分组的操作效率。

缺点:

1、存储空间,每个索引都要空间存储
2、如果非聚集索引很多,一旦聚集索引改变,那么所有非聚集索引都会跟着变。
3、过多索引会导致优化器优化过程需要评估的组合增多。
4、每个索引都有统计信息,索引越多统计信息越多。
5、更新开销,一旦一个数据改变,并且改变的列比较多,可能会引起好几个索引跟着改变。

分类:

聚集索引>>聚集索引基于数据行的键值,在表内排序和存储这些数据行。每个表只能有一个聚集索引,应为数据行本分只能按一个顺序存储。

  在聚集索引中,表中各行的物理顺序与索引键值的逻辑(索引)顺序相同。聚集索引通常可加快UPDATE和DELETE操作的速度,因为这两个操作需要读取大量的数据。创建或修改聚集索引可能要花很长时间,因为执行这两个操作时要在磁盘上对表的行进行重组。

非聚集索引>>因为一个表中只能有一个聚集索引,如果需要在表中建立多个索引,则可以创建为非聚集索引。表中的数据并不按照非聚集索引列的顺序存储,但非聚集索引的索引行中保存了非聚集键值和行定位器,可以快捷地根据非聚集键的值来定位记录的存储位置。

  非聚集索引,本质上来说也是聚集索引的一种.非聚集索引并不改变其所在表的物理结构,而是额外生成一个聚集索引的B树结构,但叶子节点是对于其所在表的引用,这个引用分为两种,如果其所在表上没有聚集索引,则引用行号。如果其所在表上已经有了聚集索引,则引用聚集索引的页.

使用原则:

1:不要索引数据量不大的表,对于小表来讲,表扫描的成本并不高。
2:不要设置过多的索引,在没有聚集索引的表中,最大可以设置249个非聚集索引,过多的索引首先会带来更大的磁盘空间,而且在数据发生修改时,对索引的维护是特别消耗性能的。
3:合理应用复合索引,有某些情况下可以考虑创建包含所有输出列的覆盖索引。
4:对经常使用范围查询的字段,可能考虑聚集索引。
5:避免对不常用的列,逻辑性列,大字段列创建索引。

转载于:https://www.cnblogs.com/zuowj/p/3520509.html

你可能感兴趣的文章
核心②undefined 和 null
查看>>
Android--UI之ProgressBar
查看>>
DOS操作数据库基础
查看>>
Windows 8 商店应用开发设计十大常见问题(一)
查看>>
CodeForces A. Many Equal Substrings
查看>>
Binary String Matching
查看>>
【Unity Shader】(六) ------ 复杂的光照(上)
查看>>
BETA冲刺(7/7)
查看>>
Android浏览器访问java web的方法
查看>>
设计模式:原型模式
查看>>
Item 12: Copy all parts of an object(Effective C++)
查看>>
菜根谭#60
查看>>
Acne Scars Treatment - Probably the Best Acne Scars Treatment Available
查看>>
Linux(Ubuntu)下MySQL的安装
查看>>
Oracle学习DayThree
查看>>
Android事件处理
查看>>
dbca静默建库
查看>>
将MySQL数据迁移到Oracle
查看>>
DedeCms V5.6 plus/advancedsearch.php 任意sql语句执行漏洞
查看>>
Web前端开发JQuery框架(5)
查看>>