数据库原理和应用.索引

数据库原理和应用.索引

ID:20273199

大小:143.00 KB

页数:25页

时间:2018-10-11

数据库原理和应用.索引_第1页
数据库原理和应用.索引_第2页
数据库原理和应用.索引_第3页
数据库原理和应用.索引_第4页
数据库原理和应用.索引_第5页
资源描述:

《数据库原理和应用.索引》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一、创建索引CREATEINDEX语句用于在表中创建索引。CREATE[UNIQUE]INDEXindex  ONtablename(field[ASC

2、DESC][,field[ASC

3、DESC],...])  [WITH{PRIMARY

4、DISALLOWNULL

5、IGNORENULL}]索引分为聚簇索引和非聚簇索引。1.聚簇索引聚簇索引也叫簇类索引,是一种对磁盘上实际数据重新组织以按指定的一个或多个列的值排序。由于聚簇索引的索引页面指针指向数据页面,所以使用聚簇索引查找数据几乎总是比使用非聚簇索引快。

6、每张表只能建一个聚簇索引,并且建聚簇索引需要至少相当该表120%的附加空间,以存放该表的副本和索引中间页。聚簇索引确定表中数据的物理顺序。聚簇索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。汉语字典也是聚簇索引的典型应用,在汉语字典里,索引项是字母+声调,字典正文也是按照先字母再声调的顺序排列。聚簇索引对于那些经常要搜索范围值的列特别有效。使用聚簇索引找到包含第一个值的行

7、后,便可以确保包含后续索引值的行在物理相邻。例如,如果应用程序执行的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此类查询的性能。同样,如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚簇(物理排序),避免每次查询该列时都进行排序,从而节省成本。建立聚簇索引的思想  1、大多数表都应该有聚簇索引或使用分区来降低对表尾页的竞争,在一个高事务的环境中,对最后一页的封锁严重影响系统的吞吐量。  2

8、、在聚簇索引下,数据在物理上按顺序排在数据页上,重复值也排在一起,因而在那些包含范围检查(between、<、<=、>、>=)或使用groupby或orderby的查询时,一旦找到具有范围中第一个键值的行,具有后续索引值的行保证物理上毗连在一起而不必进一步搜索,避免了大范围扫描,可以大大提高查询速度。  3、在一个频繁发生插入操作的表上建立聚簇索引时,不要建在具有单调上升值的列(如IDENTITY)上,否则会经常引起封锁冲突。  4、在聚簇索引中不要包含经常修改的列,因为码值修改后,数据行必须移动到

9、新的位置。  5、选择聚簇索引应基于where子句和连接操作的类型。聚簇索引的侯选列  1、主键列,该列在where子句中使用并且插入是随机的。  2、按范围存取的列,如pri_order>100andpri_order<200。  3、在groupby或orderby中使用的列。  4、不经常修改的列。5、在连接操作中使用的列。2.非聚簇索引非聚簇索引,索引的一种。索引分为聚簇索引和非聚簇索引两种。建立索引的目的是加快对表中记录的查找或排序。牵引顺序与数据物理排列顺序无关。建立索引  建立索引的目的是加

10、快对表中记录的查找或排序。付出的代价:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。索引分为聚簇索引和非聚簇索引两种非聚簇索引  非聚簇索引,叶级页指向表中的记录,记录的物理顺序与逻辑顺序没有必然的联系。非聚簇索引则更象书的标准索引表,索引表中的顺序通常与实际的页码顺序是不一致的。  非聚簇索引查找数据示意图。哪些情况需要建立非聚簇索引  每个表只能有一个聚簇索引,因为一个表中的记录只能以一种物理顺序存放。但是,一个表可以有不止一个非聚簇索引。实际上,对每个表

11、你最多可以建立249个非聚簇索引。非聚簇索引需要大量的硬盘空间和内存。另外,虽然非聚簇索引可以提高从表中取数据的速度,它也会降低向表中插入和更新数据的速度。每当你改变了一个建立了非聚簇索引的表中的数据时,必须同时更新索引。因此你对一个表建立非聚簇索引时要慎重考虑。如果你预计一个表需要频繁地更新数据,那么不要对它建立太多非聚簇索引。另外,如果硬盘和内存空间有限,也应该限制使用非聚簇索引的数量。用SQL建立索引  为了给一个表建立索引,启动任务栏SQLSever程序组中的ISQL/w程序。进入查询窗口后,输入

12、下面的语句:  CREATEINDEXmycolumn_indexONmytable(myclumn)  这个语句建立了一个名为mycolumn_index的索引。  注意:  执行后,都会收到如下的信息:  Thiscommanddidnotreturndata,anditdidnotreturnanyrows  这说明该语句执行成功了。  索引mycolumn_index对表mytable的mycolumn字段进行。这是个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。