欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    SQL-Server-2012数据库开发教程第7章.ppt

    • 资源ID:76414338       资源大小:968KB        全文页数:66页
    • 资源格式: PPT        下载积分:12金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    SQL-Server-2012数据库开发教程第7章.ppt

    SQLServer2012SQLServer2012数据库开发教程数据库开发教程数据库开发教程数据库开发教程(第(第(第(第33版)版)版)版)授课教师:授课教师:职务:职务:第第7章章规则和索引规则和索引课程描述课程描述课程描述课程描述规则和索引是规则和索引是规则和索引是规则和索引是SQL ServerSQL ServerSQL ServerSQL Server中常用中常用中常用中常用的对象,规则可以指定表中数据的对象,规则可以指定表中数据的对象,规则可以指定表中数据的对象,规则可以指定表中数据需要满足的条件,索引则可以提需要满足的条件,索引则可以提需要满足的条件,索引则可以提需要满足的条件,索引则可以提高查询数据的效率。俗话说没有高查询数据的效率。俗话说没有高查询数据的效率。俗话说没有高查询数据的效率。俗话说没有规矩不成方圆,如果没有规则来规矩不成方圆,如果没有规则来规矩不成方圆,如果没有规则来规矩不成方圆,如果没有规则来约束,表中就有可能保存一些不约束,表中就有可能保存一些不约束,表中就有可能保存一些不约束,表中就有可能保存一些不符合逻辑的垃圾数据,例如工资符合逻辑的垃圾数据,例如工资符合逻辑的垃圾数据,例如工资符合逻辑的垃圾数据,例如工资为为为为-5000-5000-5000-5000,年龄为,年龄为,年龄为,年龄为400400400400,性别为马,性别为马,性别为马,性别为马等。这种数据会给应用程序带来等。这种数据会给应用程序带来等。这种数据会给应用程序带来等。这种数据会给应用程序带来混乱。而索引则类似于图书的目混乱。而索引则类似于图书的目混乱。而索引则类似于图书的目混乱。而索引则类似于图书的目录(实际上索引的情况要比目录录(实际上索引的情况要比目录录(实际上索引的情况要比目录录(实际上索引的情况要比目录复杂得多),创建索引可以帮助复杂得多),创建索引可以帮助复杂得多),创建索引可以帮助复杂得多),创建索引可以帮助数据库引擎快速的查询数据。这数据库引擎快速的查询数据。这数据库引擎快速的查询数据。这数据库引擎快速的查询数据。这两个对象虽然不是必须的,但合两个对象虽然不是必须的,但合两个对象虽然不是必须的,但合两个对象虽然不是必须的,但合理地设计规则和索引对于创建完理地设计规则和索引对于创建完理地设计规则和索引对于创建完理地设计规则和索引对于创建完善、高效的数据库应用程序是很善、高效的数据库应用程序是很善、高效的数据库应用程序是很善、高效的数据库应用程序是很有帮助的。有帮助的。有帮助的。有帮助的。本章知识点本章知识点7.1 7.1 规则规则 7.2 7.2 索引索引 7.1规则规则7.1.1 7.1.1 规则的概念规则的概念 7.1.2 7.1.2 创建规则创建规则 7.1.3 7.1.3 查看规则查看规则 7.1.4 7.1.4 绑定规则绑定规则 7.1.5 7.1.5 解除绑定规则解除绑定规则 7.1.6 7.1.6 删除规则删除规则 7.1.1规则的概念规则的概念p规则(规则(RulesRules)是用于执行一些与检查约束相同)是用于执行一些与检查约束相同的功能。检查约束比规则更简明,一个列只能的功能。检查约束比规则更简明,一个列只能应用一个规则,但是却可以应用多个检查约束。应用一个规则,但是却可以应用多个检查约束。p检查约束可以在检查约束可以在CREATE TABLECREATE TABLE语句中定义,而语句中定义,而规则作为独立的对象创建,然后绑定在指定的规则作为独立的对象创建,然后绑定在指定的列上。列上。p规则也是维护数据库中数据完整性的一种手段,规则也是维护数据库中数据完整性的一种手段,使用它可以避免表中出现不符合逻辑的数据,使用它可以避免表中出现不符合逻辑的数据,例如工资小于例如工资小于0 0。7.1.2创建规则创建规则p使用使用CREATE RULECREATE RULE语句可以创建规则,语句可以创建规则,其语法结构如下:其语法结构如下:CREATE RULE CREATE RULE.AS AS p规则表达式中可以包含算术运算符、关规则表达式中可以包含算术运算符、关系运算符和谓词(例如系运算符和谓词(例如ININ、LIKELIKE、BETWEENBETWEEN等)。等)。【例例7-1】p创建一个规则创建一个规则SexRuleSexRule,指定变量,指定变量sexsex的取值只能为的取值只能为 男男 或或 女女,代码如下:,代码如下:CREATE RULE SexRuleCREATE RULE SexRuleAS sex IN(AS sex IN(男男,女女)【例例7-2】p创建一个规则创建一个规则WageRuleWageRule,指定变量,指定变量wagewage的取值范围为的取值范围为050000050000,代码如下:,代码如下:CREATE RULE WageRuleCREATE RULE WageRuleAS wage BETWEEN 0 AND 50000 AS wage BETWEEN 0 AND 50000 7.1.3查看规则查看规则p打开打开SQL Server Management SQL Server Management StudioStudio,在对象资源管理器中展,在对象资源管理器中展开要管理的数据库,例如开要管理的数据库,例如HrSystemHrSystem。再展开。再展开“可编程性可编程性”/“规则规则”,可以查看选择数,可以查看选择数据库中的所有规则对象。如果还据库中的所有规则对象。如果还没有创建规则对象,则没有创建规则对象,则“规则规则”节点下没有子节点。右击一个规节点下没有子节点。右击一个规则对象,在弹出菜单中选择则对象,在弹出菜单中选择“编编写规则脚本为写规则脚本为”/“CREATECREATE到到”/“新查询编辑器窗口新查询编辑器窗口”,会,会打开一个新的查询编辑器窗口,打开一个新的查询编辑器窗口,并在其中显示该规则的定义语句,并在其中显示该规则的定义语句,如图如图7-17-1所示。所示。7.1.4绑定规则绑定规则p绑定规则是指将已经存在的规则应用到列绑定规则是指将已经存在的规则应用到列或用户自定义的数据类型中。使用存储过或用户自定义的数据类型中。使用存储过程程sp_bindrulesp_bindrule可以将规则绑定到列或用可以将规则绑定到列或用户自定义的数据类型,语法如下:户自定义的数据类型,语法如下:sp_bindrule rulename=sp_bindrule rulename=规则名规则名,objname=objname=对象名对象名【例例7-3】p规则规则SexRuleSexRule绑定到表绑定到表EmployeesEmployees的列的列SexSex上上的语句如下:的语句如下:USE HrSystemUSE HrSystemGOGOEXEC sp_bindrule SexRule,EXEC sp_bindrule SexRule,Employees.Sex Employees.Sex GOGO执行的结果如下:执行的结果如下:已将规则绑定到表的列。已将规则绑定到表的列。【例例7-3】p下面通过一个下面通过一个INSERTINSERT语句验证规则的应用效果。执行下面的语句验证规则的应用效果。执行下面的INSERTINSERT语句,语句,向表向表EmployeesEmployees中插入一条记录。中插入一条记录。USE HrSystemUSE HrSystemGOGOINSERT INTO Employees(Emp_name,Sex,Title,Wage,IdCard,Dep_id)INSERT INTO Employees(Emp_name,Sex,Title,Wage,IdCard,Dep_id)VALUES(VALUES(小李小李,无无,职员职员,10000,110123xxxx,1),10000,110123xxxx,1)GOGOp注意,注意,INSERTINSERT语句设置列语句设置列SexSex的值为的值为“无无”。因为列。因为列SexSex绑定到规则绑定到规则SexRuleSexRule,而在规则,而在规则SexRuleSexRule中规定列值只能是中规定列值只能是“男男”或或“女女”。因此,执。因此,执行行INSERTINSERT语句的结果如下:语句的结果如下:消息消息513513,级别,级别1616,状态,状态0 0,第,第2 2 行行列的插入或更新与先前的列的插入或更新与先前的CREATE RULE CREATE RULE 语句所指定的规则发生冲突。该语句已语句所指定的规则发生冲突。该语句已终止。冲突发生于数据库终止。冲突发生于数据库HrSystemHrSystem,表,表dbo.Employeesdbo.Employees,列,列SexSex。语句已终止。语句已终止。p返回结果中提示返回结果中提示INSERTINSERT语句中指定的列语句中指定的列SexSex的指定值(的指定值(无无)不满足之前)不满足之前绑定的规则。绑定的规则。7.1.5解除绑定规则解除绑定规则p使用存储过程使用存储过程sp_unbindrulesp_unbindrule可以解除规可以解除规则的绑定,它的基本语法如下:则的绑定,它的基本语法如下:sp_unbindrulesp_unbindrule objname=objname=对象对象名名p对象名可以是表名和列名,也可以是自定对象名可以是表名和列名,也可以是自定义的数据类型。义的数据类型。【例例7-4】p使用存储过程使用存储过程sp_unbindrulesp_unbindrule取消表取消表EmployeesEmployees的列的列SexSex上绑定的规则,具体语句如下:上绑定的规则,具体语句如下:USE HrSystemUSE HrSystemGOGOEXEC sp_unbindrule Employees.Sex EXEC sp_unbindrule Employees.Sex GOGOp执行的结果如下:执行的结果如下:(所影响的行数为(所影响的行数为 1 1 行)行)已从表的列上解除了规则的绑定。已从表的列上解除了规则的绑定。7.1.6删除规则删除规则p在在SQL Server Management StudioSQL Server Management Studio中,右键单击指定中,右键单击指定的规则,在弹出菜单中选择的规则,在弹出菜单中选择“删除删除”项则删除指定的项则删除指定的规则对象。规则对象。p也可以使用也可以使用DROP RULEDROP RULE语句从当前数据库中删除一个语句从当前数据库中删除一个或多个规则,语法如下:或多个规则,语法如下:DROP RULE DROP RULE 规则名规则名1,1,规则名规则名2,.,2,.,规则名规则名nnp在删除规则前,需要调用在删除规则前,需要调用sp_unbindrulesp_unbindrule存储过程解存储过程解除该规则的绑定。除该规则的绑定。【例例7-5】p使用使用DROP RULEDROP RULE删除规则删除规则SexRuleSexRule,具体语句,具体语句如下:如下:USE HrSystemUSE HrSystemEXEC sp_unbindrule Employees.Sex EXEC sp_unbindrule Employees.Sex DROP RULE SexRuleDROP RULE SexRule7.2索引索引7.2.1 设计索引7.2.2 创建索引7.2.3 修改索引7.2.4 删除索引7.2.5 查看索引信息7.2.6 使用索引优化数据库查询效率7.2.7 无法使用索引的SELECT语句7.2.1 设计索引p用户对数据库最常用的操作就是查询数据。在用户对数据库最常用的操作就是查询数据。在数据量比较大时,搜索满足条件的数据可能会花数据量比较大时,搜索满足条件的数据可能会花费很长时间,从而占用较多的服务器资源。为了费很长时间,从而占用较多的服务器资源。为了提高数据检索的能力,数据库中引入了索引的概提高数据检索的能力,数据库中引入了索引的概念。念。p在在SQL ServerSQL Server中,表或视图可以包含两种索引,中,表或视图可以包含两种索引,即聚集索引和非聚集索引。即聚集索引和非聚集索引。1聚集索引聚集索引p在聚集索引中,表中各行的物理顺序与索引键在聚集索引中,表中各行的物理顺序与索引键值的逻辑(索引)顺序相同。一个表只能包含一值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引,因为表中数据只能按照一种顺序进个聚集索引,因为表中数据只能按照一种顺序进行存储。聚集索引通常可加快行存储。聚集索引通常可加快UPDATEUPDATE和和DELETEDELETE操操作的速度,因为这两个操作需要读取大量的数据。作的速度,因为这两个操作需要读取大量的数据。创建或修改聚集索引可能要花很长时间,因为执创建或修改聚集索引可能要花很长时间,因为执行这两个操作时要在磁盘上对表的行进行重组。行这两个操作时要在磁盘上对表的行进行重组。Emp_name上聚集索引的映射关系上聚集索引的映射关系保存聚集索引的保存聚集索引的B树的组织结构示意图树的组织结构示意图p在在SQL SQL ServerServer中中,聚聚集集索索引引按按照照B B树树结结构构进进行行组组织织,其示意图如图其示意图如图7-37-3所示。所示。2非聚集索引非聚集索引p因为一个表中只能有一个聚集索引,如果需因为一个表中只能有一个聚集索引,如果需要在表中建立多个索引,则可以创建为非聚集要在表中建立多个索引,则可以创建为非聚集索引。表中的数据并不按照非聚集索引列的顺索引。表中的数据并不按照非聚集索引列的顺序存储,但非聚集索引的索引行中保存了非聚序存储,但非聚集索引的索引行中保存了非聚集键值和行定位器,可以快捷地根据非聚集键集键值和行定位器,可以快捷地根据非聚集键的值来定位记录的存储位置。的值来定位记录的存储位置。p非聚集索引也使用非聚集索引也使用B B树结构进行组织,只是树结构进行组织,只是B B树的叶层是由索引页而不是数据页组成的。树的叶层是由索引页而不是数据页组成的。3唯一索引唯一索引p无论是聚集索引,还是非聚集索引,都可以是唯一无论是聚集索引,还是非聚集索引,都可以是唯一索引。在索引。在SQL ServerSQL Server中,当唯一性是中,当唯一性是.数据本身的数据本身的特点时,可创建唯一索引,但索引列的组合不同于特点时,可创建唯一索引,但索引列的组合不同于表的主键。例如,如果要频繁查询表表的主键。例如,如果要频繁查询表EmployeesEmployees(该表主键为列(该表主键为列Emp_idEmp_id)的列)的列Emp_nameEmp_name,而且要保,而且要保证姓名是唯一的,则在列证姓名是唯一的,则在列Emp_nameEmp_name上创建唯一索引。上创建唯一索引。如果用户为多个员工输入了相同的姓名,则数据库如果用户为多个员工输入了相同的姓名,则数据库显示错误,并且不能保存该表。显示错误,并且不能保存该表。7.2.2创建索引创建索引p(1 1)在)在SQL Server Management StudioSQL Server Management Studio中,选择并中,选择并右击要创建索引的表,从弹出菜单中选择右击要创建索引的表,从弹出菜单中选择“设计设计”,打开表设计器。右键单击表设计器,从弹出菜单中选打开表设计器。右键单击表设计器,从弹出菜单中选择择“索引索引/键键”命令,打开命令,打开“索引索引/键键”对话框。对话对话框。对话框中列出了已经存在的索引,如图框中列出了已经存在的索引,如图7-47-4所示。所示。创建索引创建索引(2 2)单击)单击“添加添加”按钮。在按钮。在“选定的主选定的主/唯一键或索引唯一键或索引”框显示系统分配给新索引的名称。框显示系统分配给新索引的名称。(3 3)在)在“列列”属性下选择要创建索引的列。可以选择属性下选择要创建索引的列。可以选择多达多达1616列。为获得最佳性能,最好只选择一列或两列。为获得最佳性能,最好只选择一列或两列。对所选的每一列,可指出索引是按升序还是降列。对所选的每一列,可指出索引是按升序还是降序组织列值。序组织列值。(4 4)如果要创建唯一索引,则在)如果要创建唯一索引,则在“是唯一的是唯一的”属性中属性中选择选择“是是”。(5 5)设置完成后,单击)设置完成后,单击“确定确定”按钮。按钮。(6 6)当保存表时,索引即创建在数据库中。)当保存表时,索引即创建在数据库中。使用使用CREATEINDEX语句创建索引语句创建索引CREATE UNIQUE CLUSTERED|CREATE UNIQUE CLUSTERED|NONCLUSTERED INDEX NONCLUSTERED INDEX 索引名索引名ON ON 表名表名|视图名视图名 (列名列名 ASC|DESC ,.n )ASC|DESC ,.n )1使用使用UNIQUE参数创建唯一索引。参数创建唯一索引。p【例例7-67-6】在数据库在数据库HrSystemHrSystem中为表中为表EmployeesEmployees创建基于创建基于IDCardIDCard列的唯一索引列的唯一索引IX_EmployeesIX_Employees,可以使用以下命令:,可以使用以下命令:USE HrSystemUSE HrSystemGOGOCREATE UNIQUE NONCLUSTERED INDEX CREATE UNIQUE NONCLUSTERED INDEX IX_Employees ON IX_Employees ON dbo.Employees(IdCard)dbo.Employees(IdCard)GOGO2聚集聚集/非聚集索引。非聚集索引。p【例例7-77-7】为表为表EmployeesEmployees创建基于列创建基于列IDCardIDCard的唯一、聚集索引的唯一、聚集索引IX_Employees1IX_Employees1,可以使用以下命令:,可以使用以下命令:USE HrSystemUSE HrSystemGOGOCREATE UNIQUE CLUSTERED INDEX CREATE UNIQUE CLUSTERED INDEX IX_Employees1 ON IX_Employees1 ON dbo.Employees(IdCard)dbo.Employees(IdCard)GOGO需要注意需要注意p需要注意的是,在一个表中只允许存在一个聚集索引。需要注意的是,在一个表中只允许存在一个聚集索引。因此,如果表因此,如果表EmployeesEmployees中已经存在一个聚集索引,中已经存在一个聚集索引,则执行上面的语句时将会提示下面的错误信息。则执行上面的语句时将会提示下面的错误信息。消息消息19021902,级别,级别1616,状态,状态3 3,第,第1 1 行行无法对表无法对表dbo.Employees dbo.Employees 创建多个聚集索引。请在创建创建多个聚集索引。请在创建新聚集索引前删除现有的聚集索引新聚集索引前删除现有的聚集索引PK_Employee_263E2DD300551192PK_Employee_263E2DD300551192。3升序和降序升序和降序p【例例7-87-8】对表对表EmployeesEmployees的列的列Emp_nameEmp_name按照按照降序创建索引,可以使用以下命令:降序创建索引,可以使用以下命令:USE HrSystemUSE HrSystemGOGOCREATE NONCLUSTERED INDEX IX_Employees2 CREATE NONCLUSTERED INDEX IX_Employees2 ON dbo.Employees ON dbo.Employees(Emp_name DESCEmp_name DESC)GOGO4在非聚集索引中包含非键列在非聚集索引中包含非键列p在在CREATE INDEXCREATE INDEX语句中使用语句中使用INCLUDEINCLUDE子子句,可以在创建索引时定义包含的非键句,可以在创建索引时定义包含的非键列,其语法结构如下:列,其语法结构如下:CREATE NONCLUSTERED INDEX CREATE NONCLUSTERED INDEX 索引名索引名ON ON 表名表名|视图名视图名 (列名列名 ASC ASC|DESC ,.n )|DESC ,.n )INCLUDE(INCLUDE(,2,n)n)【例例7-9】p在表在表EmployeesEmployees上创建非聚集索引上创建非聚集索引IX_WageIX_Wage,索引中的键列为,索引中的键列为WageWage,非键,非键列为列为Emp_nameEmp_name、SexSex和和TitleTitle,具体语句如下:,具体语句如下:USE HrSystemUSE HrSystemGOGOCREATE NONCLUSTERED INDEX IX_WageCREATE NONCLUSTERED INDEX IX_Wage ON Employees(Wage)ON Employees(Wage)INCLUDE(Emp_name,Sex,Title)INCLUDE(Emp_name,Sex,Title)GOGOp在创建索引在创建索引IX_WageIX_Wage后,当表后,当表EmployeesEmployees中的数据量比较大时,执行下面中的数据量比较大时,执行下面的的SELECTSELECT语句将会明显地改进查询效率。语句将会明显地改进查询效率。USE HrSystemUSE HrSystemGOGOSELECT Emp_name,Sex,Title,WageSELECT Emp_name,Sex,Title,WageFROM EmployeesFROM EmployeesWHERE Wage BETWEEN 1000 AND 3000WHERE Wage BETWEEN 1000 AND 3000GOGO7.2.3修改索引修改索引p在在SQL Server Management StudioSQL Server Management Studio中,选择并右击要创建索引的中,选择并右击要创建索引的表,从弹出的菜单中选择表,从弹出的菜单中选择“设计表设计表”,打开表设计器。右键单击,打开表设计器。右键单击表设计器,从弹出菜单中选择表设计器,从弹出菜单中选择“索引索引/键键”命令,打开命令,打开“索引索引/键键”对话框,并查看已经存在的索引及修改索引的属性信息。对话框,并查看已经存在的索引及修改索引的属性信息。p也可以使用也可以使用ALTER INDEXALTER INDEX语句修改索引,其基本语法如下:语句修改索引,其基本语法如下:ALTER INDEX ALTER INDEX 索引名索引名|ALL|ALL ON ON REBUILD REBUILD|DISABLE|DISABLE|REORGANIZE ;|REORGANIZE ;pALTER INDEXALTER INDEX语句的参数比较复杂,这里只介绍它的基本使用情况。语句的参数比较复杂,这里只介绍它的基本使用情况。参数说明如下:参数说明如下:pREBUILDREBUILD指定重新生成索引。指定重新生成索引。pDISABLEDISABLE指定将索引标记为已禁用。指定将索引标记为已禁用。pREORGANIZEREORGANIZE指定将重新组织的索引叶级。指定将重新组织的索引叶级。【例例7-10】p要禁用索引要禁用索引IX_EmployeesIX_Employees,可以使用下面,可以使用下面的语句:的语句:USE HrSystemUSE HrSystemGOGOALTER INDEX IX_Employees ON Employees ALTER INDEX IX_Employees ON Employees DISABLEDISABLEGOGO【例例7-11】p可以使用下面的语句重新启用被禁用的索可以使用下面的语句重新启用被禁用的索引引IX_EmployeesIX_Employees。USE HrSystemUSE HrSystemGOGOALTER INDEX IX_Employees ON Employees ALTER INDEX IX_Employees ON Employees REBUILD REBUILD GOGO7.2.4删除索引删除索引p在在SQL Server Management StudioSQL Server Management Studio中,选中,选择并右击要创建索引的表,从弹出的菜单择并右击要创建索引的表,从弹出的菜单中选择中选择“设计表设计表”。打开表设计器。右键。打开表设计器。右键单击表设计器,从弹出菜单中选择单击表设计器,从弹出菜单中选择“索引索引/键键”命令,在打开的命令,在打开的“索引索引/键键”对话框对话框中列出了已经存在的索引。单击中列出了已经存在的索引。单击“删除删除”按钮,即可删除索引信息。按钮,即可删除索引信息。使用使用DROPINDEX语句删除索引语句删除索引DROP DROP INDEX INDEX 表表名名.索索引引名名|视视图图名名.索索引引名名 ,.n ,.n【例例7-12】p删除表删除表EmployeesEmployees的索引的索引IX_EmployeesIX_Employees的的命令如下:命令如下:USE HrSystemUSE HrSystemDROP INDEX Employees.IX_EmployeesDROP INDEX Employees.IX_Employeesp可以同时删除多个索引。可以同时删除多个索引。DROP INDEXDROP INDEX语句语句不适用于通过定义不适用于通过定义PRIMARY KEY PRIMARY KEY 或或 UNIQUEUNIQUE约束创建的索引。约束创建的索引。7.2.5查看索引信息查看索引信息1 1在在SQL SQL Server Server Management Management StudioStudio中中查查看索引信息看索引信息2 2使用使用sp_helpindexsp_helpindex存储过程存储过程 3 3从从系系统统视视图图sys.indexessys.indexes中中查查询询索索引引信信息息 4 4从从系系统统视视图图sys.index_columnssys.index_columns中中查查询询索引信息索引信息 5 5从从系系统统视视图图sys.sysindexkeyssys.sysindexkeys中中查查询询索索引的键或列信息引的键或列信息 1在在SQLServerManagementStudio中查中查看索引信息看索引信息p在在SQL SQL Server Server Management Management StudioStudio中,中,展开展开“索引索引”目录,可目录,可以查看表或以查看表或视图所有的视图所有的索引信息,索引信息,如图如图7-57-5所示。所示。索引属性对话框索引属性对话框p双击一个索引,双击一个索引,在打开在打开“属性属性”窗口中可查看该窗口中可查看该索引的基本信息,索引的基本信息,如图如图7-67-6所示。在所示。在索引属性对话框索引属性对话框中,可以查看到中,可以查看到索引对应的列、索引对应的列、索引的类型、索索引的类型、索引名称等属性信引名称等属性信息。息。2使用使用sp_helpindex存储过程存储过程p也可以使用也可以使用sp_helpindexsp_helpindex存储过程来查看存储过程来查看指定表或视图的索引信息,基本语法如下:指定表或视图的索引信息,基本语法如下:sp_helpindex sp_helpindex 表名表名|视图名视图名【例例7-13】p要查看表要查看表EmployeesEmployees的索引信息,可以使用下面的代码:的索引信息,可以使用下面的代码:USE HrSystemUSE HrSystemexec sp_helpindex Employeesexec sp_helpindex Employeesp运行结果如图运行结果如图7-77-7所示。所示。3从系统视图从系统视图sys.indexes中查询索引信息中查询索引信息p系系统统视视图图sys.indexessys.indexes中中保保存存指指定定数数据据库库中中的的所所有有表表或或视视图图等等对对象象的的索索引引信信息息,它它的的主主要要列列及及其其描描述述信信息息如如表表7-17-1所示。所示。列名描述object_id该索引所属的对象的IDname索引的名称index_id索引的ID,该ID值在指定对象(表或视图)中是唯一的type索引的类型。0表示堆,1表示聚集索引,2表示非聚集索引,3表示XML索引,4表示空间索引is_unique等于0表示索引不是唯一的,等于1表示索引是唯一的is_primary_key等于1表示该索引是PRIMARY KEY约束的一部分is_unique_constraint等于1表示该索引是UNIQUE约束的一部分is_disabled等于1表示禁用索引视图视图sys.indexes的内容的内容【例例7-14】p使用连接查询的方式,将使用连接查询的方式,将sys.indexessys.indexes与系统视图与系统视图sys.objectssys.objects相关联,获得更容易结果集数据,具体语相关联,获得更容易结果集数据,具体语句如下:句如下:USE HrSystemUSE HrSystemSELECT o.name AS SELECT o.name AS 表名表名,i.name AS,i.name AS 索引名索引名,i.type_desc AS i.type_desc AS 类型描述类型描述,is_primary_key AS is_primary_key AS 主键约束主键约束,is_unique_constraint,is_unique_constraint AS AS 唯一约束唯一约束,is_disabled AS,is_disabled AS 禁用禁用FROM sys.objects o INNER JOIN sys.indexes iFROM sys.objects o INNER JOIN sys.indexes iON i.object_id=o.object_idON i.object_id=o.object_id使用连接查询从系统视图使用连接查询从系统视图sys.indexes中查看中查看索引信息索引信息4从系统视图从系统视图sys.index_columns中查询索中查询索引信息引信息列名描述object_id该索引所属的对象的IDindex_id索引的ID,该ID值在指定对象(表或视图)中是唯一的。ID值等于0表示当前索引是堆;等于1表示当前索引是聚集索引;等于2表示当前索引是非聚集索引index_column_id索引列的IDcolumn_id索引列在object_id指定的表或视图中对应的列的IDis_descending_key索引键列的排序类型。1表示子子降序排列,0表示升序排列is_included_column为1表示当前列是使用CREATE INDEX INCLUDE加入索引的非键列;为0表示列不是包含性列【例例7-15】p使用连接查询的方式,将使用连接查询的方式,将sys.index_columnssys.index_columns与系统视图与系统视图sys.objectssys.objects、sys.indexessys.indexes和和sys.columnssys.columns相关联,获得更容易结相关联,获得更容易结果集数据,具体语句如下:果集数据,具体语句如下:SELECT o.name AS SELECT o.name AS 表名表名,i.name AS,i.name AS 索引名索引名,c.name AS,c.name AS 列名列名,i.type_desc AS i.type_desc AS 类型描述类型描述,is_primary_key AS is_primary_key AS 主键约束主键约束,is_unique_constraint AS,is_unique_constraint AS 唯一约束唯一约束,is_disabled AS is_disabled AS 禁用禁用FROM sys.objects o INNER JOIN sys.indexes i ON FROM sys.objects o INNER JOIN sys.indexes i ON i.object_id=o.object_id i.object_id=o.object_id INNER JOIN sys.index_columns ic ON ic.index_id=i.index_id INNER JOIN sys.index_columns ic ON ic.index_id=i.index_id AND ic.object_id=i.object_idAND ic.object_id=i.object_idINNER JOIN sys.columns c ON ic.column_id=c.column_id AND INNER JOIN sys.columns c ON ic.column_id=c.column_id AND ic.object_id=c.object_id ic.object_id=c.object_id 使用连接查询从系统视图使用连接查询从系统视图sys.index_columns中查看索引列信息中查看索引列信息5从系统视图从系统视图sys.sysindexkeys中查询索引中查询索引的键或列信息的键或列信息字段名具体说明id表的编号indid索引的编号colid索引对应列的编号keyno该列在索引中的位置【例例7-16】p使用下面的使用下面的SELECTSELECT语句可以查询表语句可以查询表EmployeesEmployees的索引情的索引情况,其中包含索引对应列的编号。况,其中包含索引对应列的编号。USE HrSystemUSE HrSystemSELECT o.Name AS SELECT o.Name AS 表名表名,i.Name AS,i.Name AS 索引名索引名,c.name AS,c.name AS列名列名FROM sysindexes i INNER JOIN sysobjects o ON FROM sysindexes i INNER JOIN sysobjects o ON i.id=o.id i.id=o.id INNER JOIN sysindexkeys k ON o.id=k.id AND INNER JOIN sysindexkeys k ON o.id=k.id AND i.indid=k.indidi.indid=k.indidINNER JOIN syscolumns c ON c.id=i.id AND INNER JOIN syscolumns c ON c.id=i.id AND k.colid=c.colidk.colid=c.colidWHERE o.Name=EmployeesWHERE o.Name=Employees使用连接查询从系统视图使用连接查询从系统视图sys.sysindexkeys中查看索引列信息中查看索引列信息7.2.6使用索引优化数据库查询效率使用索引优化数据库查询效率p1 1不宜创建索引的情形不宜创建索引的情形p2 2适合创建索引的情形适合创

    注意事项

    本文(SQL-Server-2012数据库开发教程第7章.ppt)为本站会员(可****阿)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开