数据库原理与应用:第11章 索引_第1页
数据库原理与应用:第11章 索引_第2页
数据库原理与应用:第11章 索引_第3页
数据库原理与应用:第11章 索引_第4页
数据库原理与应用:第11章 索引_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

数据库原理与应用11索引在日常生活中我们会经常遇到索引,例如图书目录、字典索引等。借助索引,我们会很快地找到需要的东西。例如,当我们要在本书中查找有关“SQL查询”的内容时,应该先通过目录找到“SQL查询”所对应的页码,然后从该页码中找出所要的信息。这种方法比直接翻阅书的内容要快。如果把数据库表比作一本书,则表的索引就如书的目录一样,通过索引可大大提高查询速度。索引是数据库检索的常用手段,它实际上就是记录的关键字与其相应地址的对应表。此外,在SQLServer中,行的唯一性也是通过建立唯一索引来维护的。

索引的作用可归纳为:1.加快查询速度;2.保证行的唯一性。snosnamessexsbirthdayclass103陆君男1974-6-395031105匡明男1975-10-295031107王丽女1976-1-2395033108曾华男1976-9-195033109王芳女1975-2-1095031101李军男1976-2-2095033方法一:全表扫描方法二:索引sno索引表(ASC)索引sno指针地址10161031105210731084109511.1索引的分类1.聚集索引聚集索引改变表记录的物理存储顺序,使之与索引列的顺序完全相同。SQLServer2000是按B树组织聚集索引的,B树的叶节点存放数据页信息。一个表只能有一个聚集索引。2.非聚集索引非聚簇索引不改变表记录的存放顺序。SQLServer2000也是按B树组织非聚集索引的,与聚集索引不同之处在于:非聚集索引B树的叶节点不存放数据页信息,而是存放非聚集索引的键值,并且每个键值项都有指针指向包含该键值的数据行。唯一索引的概念唯一索引表示表中每一个索引值只对应唯一的数据记录,当表中有被设置为UNIQUE约束的字段时,SQLServer会自动建立一个非聚簇的唯一索引。而当表中有PRIMARYKEY的字段时,SQLServer会在PRIMARYKEY字段建立一个唯一聚簇索引。11.2系统表sysindexes

当用户创建数据库时,系统将自动创建系统表sysindexes,用户创建的每个索引均将在系统表sysindexes中登记.字段名字段类型含义idint表ID(如果indid=0或255)。否则为索引所属表的ID。indidsmallint索引ID:1=聚集索引>1=非聚集255=具有text或image数据的表条目namesysname表名(如果indid=0或255)。否则为索引的名称。11.3索引的创建

1.通过企业管理器建立索引

(1)进入企业管理器,打开school数据库;

(2)选择选择student表的图标,右击,出现如图所示的快捷菜单,选择“设计表”菜单项,出现所示school的表设计器界面;

(3)在XS表设计器界面上选中构成主键的字段“sno”然后点击“主键”图标。

(4)为了在student表中按sname建立唯一索引,在设计器界面上右击,出现快捷菜单,选择“索引/键”菜单项,进入属性选项页。student表设计器界面11.3索引的创建

(5)在“索引/键”属性页选择“新建”命令,然后,系统将自动创建新索引的名称,用户也可自己定义索引名,在“列名”下选择要创建索引的列,在此选择sname这一列,最多可选择16列。11.3索引的创建语法格式:CREATE[UNIQUE] /*是否为唯一索引*/[CLUSTERED|NONCLUSTERED] /*索引的组织方式*/INDEXindex_name /*索引名称*/ON{table|view}(column[ASC|DESC][,...n])/*指定索引定义依据的对象*/[WITH<index_option>[,...n]] /*索引选项*/[ONfilegroup] /*指定索引文件所在的文件组*/<index_option>::=

{PAD_INDEX|

FILLFACTOR=

fillfactor

|

IGNORE_DUP_KEY|

DROP_EXISTING|

STATISTICS_NORECOMPUTE2.利用SQL命令建立索引例1根据student表的sname列创建唯一非聚集索引。USEschoolIFEXISTS(SELECT*FROMsysindexesWHEREname='IX_sname')DROPINDEXstudent.IX_snameGOCREATEUNIQUENONCLUSTEREDINDEXIX_snameONstudent(sname)例2创建一视图,并为该视图创建索引。IFEXISTS(SELECT*FROMsysobjectsWHEREname='VIEW1'ANDtype='v')DROPVIEWVIEW1GOCREATEVIEWVIEW1WITHSCHEMABINDINGASSELECTstudent.sno,sname,o,cname,degreeFROM

dbo.student,dbo.score,dbo.courseWHEREstudent.sno=score.snoANDo=oGOSETANSI_NULLSONSETANSI_PADDINGONSETANSI_WARNINGSONSETARITHABORTONSETCONCAT_NULL_YIELDS_NULLONSETQUOTED_IDENTIFIERONSETNUMERIC_ROUNDABORTOFFIFEXISTS(SELECTnameFROMsysindexesWHEREname='ind1')DROPINDEXVIEW1.ind1GOCREATEUNIQUECLUSTEREDINDEXind1ONdbo.VIEW1(sno,cno)11.4索引的删除

1.通过企业管理器界面删除索引

(1)进入企业管理器,并与指定的数据库相连接;(2)为要删除索引的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择“属性”命令;(3)选择“索引/键”选项卡,从“选定的索引”列表中选择要删除的索引,选择“删除”按钮。2.通

温馨提示

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

评论

0/150

提交评论