数据库索引的简介_第1页
数据库索引的简介_第2页
数据库索引的简介_第3页
数据库索引的简介_第4页
数据库索引的简介_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、为什么要在运输途中编制索引?这是因为创建索引会显着提高系统性能。首先,可以创建唯一的索引,以确保数据库表中每个数据行的唯一性。其次,可以大大加快数据检索速度。这是建立索引的最大原因。第三,可以加快表和表之间的连接。尤其对实现数据的引用完整性有意义。第四,使用分组和排序子句检索数据时,也可以大大减少查询的分组和排序时间。第五,索引允许您在查询期间使用最优化隐藏来提高系统性能。增加索引有这么多优点,为什么不为表中的每一列编制索引?这种想法固然有合理性,但也有其片面性。索引有很多优点,但是在表的每一列中添加索引是不明智的。因为增加索引也有很多不利的方面。首先,创建索引和维护索引需要很长时间,随着数据

2、杨怡的增加,时间也会增加。第二,索引必须占用物理空间,除了数据表占用数据空间外,每个索引还必须占用特定的物理空间。创建群集索引需要更多的空间。第三,添加、删除和修改表中的数据时,索引也必须保持动态,从而降低数据维护速度。索引在数据库表中某些列的上方设置。因此,在建立索引时,请仔细考虑可以建立索引的栏和不能建立索引的栏。通常,您应该在以下列中创建索引:在需要经常搜索的列中,可以加快搜索速度。在主键列中,强制该列的唯一性和配置表中的数据排序结构。在连接常用的列中,这些列主要是用于加速连接的外键。在应根据范围搜索的列中创建索引,因为索引已排序,指定的范围是连续的。在需要经常排序的列上创建索引。因为索

3、引已经排序,所以查询可以利用索引的排序缩短查询的排序时间。在常用WHERE子句的列上创建索引,以加快条件判断速度。同样,对于某些列,创建索引后将渡边杏。通常,不应建立索引的这些栏的性质包括:首先,对于查询中很少使用或未引用的列,不应编制索引。因为这些列很少使用,所以没有索引或索引,所以祖怀速度不会提高。相反,索引增加,系统维护速度减慢,空间需求增加。第二,即使是很少数据值的列,也通过增加索引渡边杏。这是因为这些列的值很小,例如人事表中的性别列。这是因为查询结果中结果集中的数据行占表中数据行的很大一部分。也就是说,需要从表中检索的数据行的百分比非常大小。增加索引不会大大加快搜索速度。第三,对于定

4、义为text的列,将渡边杏为Image和bit数据类型建立索引。这是因为这些列的数据杨怡相当大或值较小。第四,如果修改性能比搜索性能大得多,那么编制索引就会渡边杏。因为性能修改和搜索性能徐璐矛盾。添加索引可以提高搜索性能,但会降低修改性能。减少索引可以提高修复性能,降低搜索性能。因此,如果修改性能远远大于搜索性能,则创建索引将渡边杏。索引的创建方法和索引的特征索引创建方法可以通过多种茄子方法创建索引,包括直接创建索引和间接创建索引。创建自己的索引。例如,使用CREATE INDEX语句或使用索引创建向导间接创建索引。例如,当您在表格上定义主索引键限制条件或唯一索引键限制条件时,就会建立索引。这

5、两种方法都可以创建索引,但创建索引的具体内容不同。使用CREATE INDEX语句或使用索引创建向导创建索引。牙齿方法是最基本的索引创建方法,最灵活,可以根据需要自定义索引。以这种方式创建索引时,可以使用指定数据页的成熟程度、排序、清理统计信息等多种选项优化索引。使用牙齿方法可以指定索引的类型、唯一性和复合性。也就是说,您可以在群集索引或非群集索引、一列或两列以上创建索引。也可以通过定义主键约束或唯一键约束间接创建索引。主键约束条件是保持数据完整性的逻辑,用于限制表中的记录具有相同的主键记录。建立主键限制时,会自动建立唯一的丛集索引。逻辑上,主键约束是重要的结构,但物理结构中与主键约束相对应的

6、结构是唯一的群集索引。也就是说,在物理实现中,没有主键约束,只有唯一的群集索引。同样,在创建唯一关键字约束条件时,也会创建唯一非群集索引(即索引)。因此,使用约束创建索引时,默认情况下将确定索引的类型和属性,从而减少了用户可以自定义的空间。定义主键或唯一关键字约束条件时,如果表中已存在使用CREATE INDEX语句创建的标准索引,则由主键约束条件或唯一关键字约束条件创建的索引将复盖以前创建的标准索引。换句话说,使用主键约束条件或唯一键约束条件创建的索引优先于使用CREATE INDEX语句创建的索引。索引的特征索引有两个茄子特征:唯一索引和复合索引。唯一索引确保索引列中的所有数据都是唯一的,

7、不包含重复数据。如果表已经具有主键约束条件或唯一关键字约束条件,SQL Server会在创建或修改表时自动创建唯一索引。但是,如果需要确保唯一性,则应创建主键约束或唯一键约束,而不是创建唯一索引。创建唯一索引时,请仔细考虑在表上创建主键约束条件或唯一键约束条件时SQL Server自动创建唯一索引的规则。如果表格已包含资料,则建立索引时,SQL服务器检查清单中已存在资料的重复度。每次使用插入语句插入数据或使用修改语句修改数据时,SQL server都会检查数据是否重复。如果存在重复值,SQL server将取消语句执行并返回错误消息。确保表中的每个数据行都有唯一的值,以便唯一标识每个实体。只能

8、在确保对象完整性的列中创建唯一索引。例如,不能在个人表的“名称”列中创建唯一索引。这是因为人们可以有相同的名字。复合索引是在两列或更多列中生成的索引。搜索时,如果有两列或更多列用作键值,最好在这些列上创建复合索引。生成复合索引时,最多可以将16列合并到单个复合索引中,构成复合索引的列的总长度不能超过900字节。也就是说,复合列的长度太长,渡边杏。在组合索引中,所有列必须来自同一表,不能在表之间创建组合列。在复杂索引中,列排序顺序非常重要,因此,要仔细排序列顺序,原则上必须首先定义最唯一的列。例如,(COL1,COL2)的索引与(COL2,COL1)的索引不同。这是因为两个索引的列顺序不同,要使

9、查询优化程序使用复合索引,查询语句中的WHERE子句必须引用复合索引的第一列。当表包含多个键列时,复合索引很有用。使用复合索引可以提高查询性能,并减少在一个表中生成的索引数。-索引的类型根据索引的顺序是否与数据表中的物理顺序相同,可以将索引分为两种茄子类型。一个是聚簇索引,数据表的物理顺序与索引顺序相同;另一个是非聚簇索引,数据表的物理顺序与索引顺序不同。群集索引的体系结构索引的结构类似于树结构,树的顶部称为叶级别,树的其他部分称为非叶级别,树的根位于非叶级别。同样,在聚集索引中,聚集索引的叶级别和非叶级别构成树结构,索引的最低级别是叶级别。在丛集索引中,具有表格资料的资料页面为分叶层次,分叶

10、层次上方的索引页面为非分叶层次,具有索引资料的索引页面为非分叶层次。在群集索引中,数据值的顺序始终按升序排序。必须在表中经常检索的列或按顺序访问的列上创建集群索引。建立丛集索引时,请考虑这些因素。每个表只能有一个聚集索引,因为表中的数据只能有一个物理顺序。表行的物理顺序与索引行的物理顺序相同。建立非丛集索引之前,请先建立丛集索引。这是因为聚集索引更改了表行的物理顺序,数据行按特定顺序排序,并且自动保留了牙齿顺序。键值的唯一性可以使用UNIQUE关键字明确维护,也可以由系统本身使用且用户无法访问的内部唯一标识符明确维护。聚集索引的平均大小约为数据表的5%,但是实际聚集索引的大小通常取决于索引列的

11、大小。在索引创建过程中,SQL Server临时使用当前数据库的磁盘空间,创建群集索引时需要表空间大小的1.2倍,因此,必须确保有足够的空间创建群集索引。系统访问表中的数据时,首先确定该列是否具有索引,以及该索引对要检索的数据是否有意义。如果索引存在并且索引非常有意义,系统将使用该索引访问表中的记录。系统从索引开始浏览数据,索引导航从树索引的根开始。在根中,搜索值与每个关键字值进行比较,以确定搜索值是否大于或等于关键字值。牙齿步骤重复,直到出现大于搜索值的键值,或者搜索值大于或等于索引页上的所有键值。非群集索引的体系结构非簇索引的结构与簇索引的结构非常相似,但存在明显的差异。在非群集索引中,叶

12、级别仅包含关键字值,不包含数据行。非群集索引表示行的逻辑顺序。非集群索引有两种茄子体系结构:一种在没有集群索引的表上创建非集群索引,另一种在具有集群索引的表上创建非集群索引。如果数据表没有聚集索引,则牙齿数据表也称为数据堆。如果在数据堆顶部创建了非群集索引,请使用索引页上的行标识符指向数据页上的记录。行标识符存储有关数据所在位置的信息。使用索引分配图表(IAM)页维护数据堆。IAM页包含有关数据堆所在集群的存储信息。在系统表sysindexes中,存在指向与数据堆相关的第一个IAM页的指针。系统使用IAM页浏览和查找数据堆中插入新唱片行的空间。牙齿数据页面和牙齿数据页面上的记录没有顺序,也没有

13、链接在一起。这些数据页面之间的唯一连接是写入IAM的顺序。如果在数据堆中创建了非集群索引,则叶级别包含指向数据页的行标识符。行标识符指定唱片行的逻辑顺序,由档案ID、页码和行ID组成。这些行的标识符保持唯一性。非丛集索引的分叶层次页面顺序与表格中资料的实体顺序不同。这些关键点值在叶级别保持为升序。在具有聚集索引的表中创建非聚集索引时,系统使用指向索引页上的聚集索引的聚集索引键。群集密钥存储数据的位置信息。如果表格具有丛集索引,则非丛集索引的分叶层次包含对应至丛集索引键(而非实体资料列id)的丛集索引键值。系统访问具有非集群索引的表中的数据时,如果这些非集群索引是在集群索引中创建的,则首先在非集

14、群索引中查找指向集群索引的指针,然后使用集群索引查找数据。需要以多种茄子方法检索数据时,非群集索引很有用。创建非集群索引时,请考虑以下情况:默认情况下创建的索引是非群集索引。您可以在每个表格上建立249个或更少的非丛集索引。最多只能创建一个聚集索引。系统访问表中数据的方式通常,系统访问数据库中的数据,可以使用两种茄子方法:表扫描和索引查找。第一种方法是表扫描。也就是说,将指针放在包含表中表头数据的数据页上,然后按照数据页的排序顺序逐页向前或向后扫描表数据占用的所有数据页,直到扫描完表中的所有记录。扫描时,如果找到符合祖怀标准的记录,请选择该记录。最后,显示与查询语句标准匹配的所有记录。第二种方

15、法是使用索引查询。索引是一种树结构,用于存储包含带有关键字的记录的数据页的关键字和指针。使用“查找索引”时,系统将沿着索引的树结构,根据索引中的关键字和指针查找与查询标准匹配的记录。最后,显示与查询语句标准匹配的所有记录。SQL Server存取资料库中的资料时,SQL Server会确定表格是否具有索引。如果没有索引,SQL Server将使用表扫描方法访问数据库中的数据。查询处理器根据分布式统计信息为相应的查询语句生成优化的执行计划,以提高数据访问效率并确定是否使用表扫描或索引。索引的选项建立索引时,您可以指定最佳化索引效能的选项。这些选项包括FILLFACTOR选项、PAD_INDEX选

16、项和SORTED_DATA_REORG选项。FILLFACTOR选项可让您最佳化插入和修改陈述式的效能。索引页已满时,SQL Server需要花费时间对页进行分区,以便为新唱片行腾出空间。使用FILLFACTOR选项,可以为叶级索引页分配一定比例的自由空间,从而减少页面分解时间。在包含数据的表中创建索引时,可以使用FILLFACTOR选项指定每个叶索引节点的填充百分比。默认值为0。牙齿值等于100。创建索引时,内部索引节点始终有空间容纳一个或两个表中的记录。在不包含数据的表中创建索引时,请不要使用牙齿选项。因为在牙齿情况下,牙齿选项没有实际意义。此外,牙齿选项的数值在创建时指定后不会动态维护,因此,只有在从包含数据的表创建索引时才应使用。PAD_INDEX选项还对内部索引节点使用FILLFACTOR选项的数值,以使内部索引节点的填充与叶级索引的节点相同。如果未指定FILLFACTOR选项,则单独指定PAD_INDEX选项没有意义。这是因为PAD_INDEX选项的值是由FILLFACTOR选项的值决定的。建立丛集索引时,SORTED_DATA_REORG选项会清除排序,以减少建立丛集索引所需的时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论