文章主要描述的是SQL Server索引设计指南( Index Design Guidelines),SQL Server数据库的索引对用户与T-SQL开发者来说几乎可以说是透明的。除非用户使用表提示(table hints)来强制优化器使用某个具体的索引,否则查询中的索引不能被具体指定。
通常情况下,基于索引键直方图的值,SQL Server的基于代价的优化器从I/O角度会选择代价最小的索引。
Chapter35会详细讲述优化器如何评估I/O,并决定采用最有效的查询计划。本节主要讲述一些创建有用索引的主要的指导原则,使得优化器能够有效地使用这些索引。
设计索引的一些通用的指南包括以下几点:
对于组合索引,尽量保持索引的越靠左边的列越具有高的选择性。索引中的***列应该***有唯一性(如果可能),并且索引列的顺序总体上应该具有从高到低的唯一性。然而,记住如果索引的***列没有在SARG或join子句中出现,那么选择性将不会有任何帮助。为了确保索引能够被大多数查询使用,***列应该是查询中最常用的列。
确保join中使用的列具有索引。如果join中的列上没有索引,Join的处理将是低效的。记住:一个PRIMARY KEY约束将自动会在一个列上创建索引,但是FOREIGN KEY约束不会的。如果你的查询通常在表的primary Key 和foreign key之间进行join操作,那么你将会在foreign key上创建索引。
为你的最关键查询和事务来调整索引。你不能为每个可能的查询都创建索引。然而,如果你能识别你的关键和最常用的查询,并为它们创建索引,那么你的应用将运行地更好。SQL Profile是一个识别你的最常用查询的有用工具。SQL Profie也能识别那些运行慢的查询。
避免列上的索引具有低选择性。优化器将不可能使用这些索引,它们只是占有些空间并且在插入、删除、修改时增加了以一些不必的负担而已。当索引能覆盖一个查询则是一个例外。索引覆盖将在后面详细介绍。
小心选择你的聚集和非聚集索引。接下来的两个小节将讨论给出一些选择聚集和非聚集索引的技巧和指南。这些都基于对列上包含的数据和该列上所执行的查询类型来给出的。
以上的相关内容就是对SQL Server索引设计指南( Index Design Guidelines的介绍,望你能有所收获。
上述的相关内容就是对SQL Server索引设计指南( Index Design Guidelines)的描述,希望会给你带来一些帮助在此方面。
【编辑推荐】
- SQL Server 2000全文检索的使用方案描述
- SQL Server数据库与identity列
- SQL Server更多内存的提供步骤描述
- SQL Server 实用操作的代码演示
- SQL Server 2005固定服务器角色的操作全过程