37、SQL 索引优化与高级应用

SQL 索引优化与高级应用

1. 全表扫描与索引选择

在某些情况下,查询计划可能会调用全表扫描。例如:

|--Clustered Index
Scan(OBJECT:([tempdb].[produce].[vegetable].[PKvegetable]),
WHERE:([tempdb].[produce].[vegetable].[color]='green'))

这里返回的行数和数据量是固定的。不过, Xvegetable_color 索引的选择性较差,并且 produce.vegetable 表规模较小,优化器没有检查索引的直方图,而是直接选择了索引扫描。如果不确定表中是否存在某个索引,可以执行 sp_help 'produce.vegetable' 进行检查。

优化器在找到一个它认为执行时间与寻找更优计划相当或更短的计划时,就会停止寻找更好的计划。

2. 唯一索引的使用

UNIQUE 是一个重要的索引设置。在表设计中, UNIQUE PRIMARY KEY 约束用于强制键的唯一性。SQL Server 在背后使用唯一索引来确保列或列组的唯一性。这是因为要确定一个值是否唯一,需要在表中查找该值,而 SQL Server 使用索引来加速数据访问,所以唯一索引是完美的选择。

在提高性能时,如果索引的数据允许,应使用唯一索引。例如,当构建的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值