对数据库索引使用的思考(未完成)

本文介绍了数据库索引的概念,包括聚集索引、非聚集索引、唯一索引和包含列索引,并探讨了它们的工作原理及如何影响INSERT、DELETE、UPDATE等操作的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

索引的使用有利有弊,需要总结一下,故找了一下资料总结了一下。

 

定义(部分定义来源于 SQL Server 联机丛书):

索引:与书中的索引一样,数据库中的索引使您可以快速找到表或索引视图中的特定信息。索引包含从表或视图中一个或多个列生成的键,以及映射到指定数据的存储位置的指针。

聚集索引:聚集索引基于聚集索引键按顺序排序和存储表或视图中的数据行。聚集索引按 B 树索引结构实现,B 树索引结构支持基于聚集索引键值对行进行快速检索。

非聚集索引:既可以使用聚集索引来为表或视图定义非聚集索引,也可以根据堆来定义非聚集索引。非聚集索引中的每个索引行都包含非聚集键值和行定位符。此定位符指向聚集索引或堆中包含该键值的数据行。索引中的行按索引键值的顺序存储,但是不保证数据行按任何特定顺序存储,除非对表创建聚集索引。

唯一索引:唯一索引确保索引键不包含重复的值,因此,表或视图中的每一行在某种程度上是唯一的。聚集索引和非聚集索引都可以是唯一索引。

包含列索引:一种非聚集索引,它扩展后不仅包含键列,还包含非键列。

 

原理分析:

是否使用索引以及使用哪种索引,其实就是需要我们在 INSERT、DELETE、UPDATE、MERGE 和 SELECT 等命令之中进行性能上的权衡。因为在执行 INSERT、DELETE、UPDATE、MERGE 命令的时候是需要花时间和资源进行索引的维护的,所以并不是说加索引就能提高性能,这个是需要根据数据的实际使用而定的。

聚集索引和非聚集索引的不同如下:

聚集索引非聚集索引
索引与数据保存在同一个地方索引与数据保存在不同的地方
一个表只能有一个聚集索引一个表可以有多个非聚集索引
数据的保存顺序与索引一致索引的保存顺序与数据不同
不能添加包含列可以添加包含列

 

覆盖查询

 

使用索引的最佳实践指南:

1、

2、

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值