浅聊索引

来源:互联网 发布:ps头像源码 编辑:程序博客网 时间:2024/05/18 01:54

----------索引的创建----------
--创建一般索引
CREATE INDEX A ON T(T01)

--创建聚集索引
CREATE CLUSTERED INDEX A ON T(T01)

--创建非聚集索引
CREATE NONCLUSTERED INDEX A ON T(T01)

--删除索引
DROP INDEX T.A

----------聚集索引与非聚集索引的区别----------
--使用聚集索引 
--聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),
--就像电话簿按姓氏和名字进行组织一样。 
  
--聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。例如,如果应用程序执行的一个查询经常检索某一日期范围内的记录,
--则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此类查询的性能。同样,如果对从表中检索的数据进行排序时经常要用到某一列,
--则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从而节省成本。 
  
--当索引值唯一时,使用聚集索引查找特定的行也很有效率。例如,使用唯一雇员ID列emp_id查找特定雇员的最快速的方法,是在emp_id列上创建聚集索引或PRIMARY KEY约束 
  
  
--使用非聚集索引 
--非聚集索引与课本中的索引类似。数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。索引中的项目按索引键值的顺序存储,
--而表中的信息按另一种顺序存储(这可以由聚集索引规定)。如果在表中未创建聚集索引,则无法保证这些行具有任何特定的顺序。 
  
--与使用书中索引的方式相似,SQL   Server 2000在搜索数据值时,先对非聚集索引进行搜索,找到数据值在表中的位置,然后从该位置直接检索数据。
--这使非聚集索引成为精确匹配查询的最佳方法,因为索引包含描述查询所搜索的数据值在表中的精确位置的条目。如果基础表使用聚集索引排序,则该位置为聚集键值;
--否则,该位置为包含行的文件号、页号和槽号的行   ID   (RID)。例如,对于在   emp_id   列上有非聚集索引的表,如要搜索其雇员ID(emp_id),SQL Server会在索引中查找这样一个条目,
--该条目精确列出匹配的emp_id列在表中的页和行,然后直接转到该页该行。 

--总结:聚集索引以类似于树结构的形式组织数据;非聚集索引以类似于键/值对的形式组织数据——所以聚集索引不适合经常更新的表,而非聚集索引则不然.

原创粉丝点击