SQL Server 索引优化实践
1. 索引类型
SQL Server 中的索引对于加速查询至关重要: - 聚集索引 (Clustered Index):决定表中数据的物理存储顺序。一个表只能有一个聚集索引(通常基于主键)。 - 非聚集索引 (Non-Clustered Index):包含一个独立于数据行的指针结构。一个表可以创建多个非聚集索引。
2. 包含列的索引 (Index with Included Columns)
在非聚集索引中,可以使用 INCLUDE 关键字添加非键列,以覆盖整个查询,从而避免昂贵的书签查找 (RID Lookup / Key Lookup):
CREATE NONCLUSTERED INDEX IX_SalesOrderHeader_CustomerID
ON Sales.SalesOrderHeader (CustomerID)
INCLUDE (OrderDate, SubTotal);
3. 执行计划分析
在 SSMS 中,您可以通过启用“显示实际执行计划”来检查查询的性能: - Index Seek:引擎直接定位到索引中的特定范围,效率极高。 - Index Scan:引擎遍历了整棵索引树,需要引起警惕。 - Table Scan:若表没有聚集索引(堆表),则会全表扫描,性能较差。
文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有