当前位置:Gxlcms > 数据库问题 > SQLServer覆盖索引

SQLServer覆盖索引

时间:2021-07-01 10:21:17 帮助过:41人阅读

覆盖索引分析

  这一小节将通过创建覆盖索引以及使用DBCC命令查看索引的方式进行介绍。

技术图片 创建表&测试数据&覆盖索引

  执行CROSS JOIN插入的测试数据有4000条左右,现在可以使用DBCC命令来查看表的数据页和索引页的情况。

技术图片 查看表的数据页和索引页命令

  执行完这条命令后,应该可以看到显示的页信息,其中PageType=1的行表示数据页,PageType=2的行表示索引页,任意选择一条PageType=2的行,找到PageFID和PagePID,就可以使用DBCC命令来查看索引页的具体信息。

技术图片 查看索引页信息的命令

   执行完这条命令后,应该可以看到t1_name这一列的信息是包含在这个索引页中的。现在可以通过执行不同的查询SQL来查看覆盖索引所带来的性能提升,在执行SQL的同时开启显示实际的执行计划,从而可以清楚得看到对比结果。

技术图片 对比查询SQL

  技术图片

  技术图片

  查询1开销为33%,而查询2的开销为67%,对比可以看到查询t1_name的开销比查询t1_name1的开销小很多,因为查询t1_name只需要执行索引,就可以在索引页上找到数据,而查询t1_name1还要去查找数据页。

覆盖索引的思考

  创建索引能带来查询的优化,但却带来了更改数据的负担,覆盖索引也不意外。由上面的分析我们知道,覆盖索引是非聚集索引的进一步细化,在更新数据的时候,如果涉及到覆盖索引INCLUDE的列,除了更改数据页之外还要更改索引页,比单纯使用非聚集索引增添了额外的工作。所以,在设计覆盖索引的时候,要综合考虑应该覆盖的列,确保INCLUDE的列能带来最佳的性能优化。武汉代孕网微13802269370  北京代孕微13802269370   深圳代孕找公司微13802269370

SQLServer覆盖索引

标签:大小   公司   创建索引   工作   arc   png   系统信息   方式   位置   

人气教程排行