RSS订阅 | 匿名投稿
您的位置:网站首页 > 相关知识 > 正文

索引基础知识

作者:habao 来源: 日期:2017-10-18 15:07:39 人气: 标签:later相关知识

  索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引包含由表或视图中的一列或多列生成的键。这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关联的行。

  聚集索引根据数据行的键值在表或视图中排序和存储这些数据行。索引定义中包含聚集索引列。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序排序。

  非聚集索引具有于数据行的结构。非聚集索引包含非聚集索引键值,并且每个键值项都有指向包含该键值的数据行的指针。

  聚集索引和非聚集索引都可以是唯一的。这意味着任何两行都不能有相同的索引键值。另外,索引也可以不是唯一的,即多行可以共享同一键值。有关详细信息,请唯一索引设计指南。

  对表列定义了 PRIMARY KEY 约束和 UNIQUE 约束时,会自动创建索引。例如,如果创建了表并将一个特定列标识为主键,则 SQL Server 2005 数据库引擎 自动对该列创建 PRIMARY KEY 约束和索引。有关详细信息,请创建索引(数据库引擎)。

  设计良好的索引可以减少磁盘 I/O 操作,并且消耗的系统资源也较少,从而可以提高查询性能。对于包含 SELECT、UPDATE 或 DELETE 语句的各种查询,索引会很有用。例如,在AdventureWorks数据库中执行的查询SELECT Title, HireDate FROM HumanResources.Employee WHERE EmployeeID = 250。执行此查询时,查询优化器评估可用于检索数据的每个方法,然后选择最有效的方法。可能采用的方法包括扫描表和扫描一个或多个索引(如果有)。

  扫描表时,查询优化器读取表中的所有行,并提取满足查询条件的行。扫描表会有许多磁盘 I/O 操作,并占用大量资源。但是,如果查询的结果集是占表中较高百分比的行,扫描表会是最为有效的方法。

  查询优化器使用索引时,搜索索引键列,查找到查询所需行的存储,然后从该提取匹配行。通常,搜索索引比搜索表要快很多,因为索引与表不同,一般每行包含的列非常少,且行遵循排序顺序。

  查询优化器在执行查询时通常会选择最有效的方法。但如果没有索引,则查询优化器必须扫描表。您的任务是设计并创建最适合您的的索引,以便查询优化器可以从多个有效的索引中选择。SQL Server 2005 提供的数据库引擎优化顾问可以帮助分析数据库并选择适当的索引。

  推荐:

  

读完这篇文章后,您心情如何?
0
0
0
0
0
0
0
0
本文网址: