SQL课件Server 2005案例教程周仁云 ISBN 9787811343960 PPT第8章.ppt

SQL课件Server 2005案例教程周仁云 ISBN 9787811343960 PPT第8章.ppt

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本章学习要点: 视图的建立 视图的维护 视图的使用 【学习导航】 8.1索引的概述 8.1.1 索引的概念 索引是一种特殊类型的数据库对象,它保存着数据表中一列或几列组合的排序结构。为数据表增加索引,可以大大提高数据的检索效率。如果没有索引,在DBMS中查询数据只有一个选择,就是对表中的数据进行全部扫描以找出满足条件的行。 8.1.2 索引的分类 根据索引的存储结构不同将其分为两类:聚集索引和非聚集索引。 聚集索引 聚集索引是指表中数据行的物理存储顺序与索引列顺序完全相同。聚集索引由上下两层组成,上层为索引页,包含表中的索引页面,用于数据检索;下层为数据页,包含实际的数据页面,存放表中的数据。在表中为某一列或多列创建聚集索引时,表中的数据会根据索引列的顺序重新排序,顺序修改之后再存储在硬盘上。因此,每张表只能创建一个聚集索引。聚集索引一般创建在表中经常检索的列或按顺序访问的列上。因为聚集索引对表中的数据进行了重新排序,当使用聚集索引找个特定的某个值后,其它连续的值就都在附近了。默认情况下,SQL Server为主键约束自动创建聚集索引。 8.1.2 索引的分类(续) 非聚集索引 非聚集索引不改变表中数据行的物理存储位置,数据与索引分开存储,通过索引带有的指针与表中的数据发生联系,如图7-1所示。表a中的数据是按表b中的数据进行顺序存储的,为表b中的“编号”列建立非聚集索引,排序之后的结果如表a所示,表a中的“指针地址”列是每条记录在原表中的存储位置(通常称为指针)。当查询“编号”列为“02”的信息时,先在索引表中查找地址代码03,然后根据索引表中的指针位置(在这里指针位置为3)找到第3条记录,如此查询效率更高些。 8.1.2 索引的分类(续) 8.1.3 索引的优缺点 优点 加快数据的检索速度,这也是创建索引最主要的目的。 例如在student表中,查询学号是“0601010104”的学生信息,SQL语句如下: Use stu select * from student where s_num= 0601010104 8.1.3 索引的优缺点(续) 缺点 索引需要占用存储空间,除了数据表占数据空间之外,每一个索引还要占一定的物理存储空间,聚集索引占用的空间更大些。 创建索引和维护索引数需要花费一定的时间,所花费的时间与数据量成正比。 当对表进行更新操作时,索引需要被重建,这就降低了索引的维护速度。 建立索引的原则 1.只要表的所有者才可以在同一个表中建立索引。 2.每个表只能创建一个聚集索引。 3.每个表最多可以创建249个非聚集索引。 4.在经常查询的字段上建立索引。 5.定义text、image和bit数据类型的列不要建立索引。 6.在外键列上可以建立索引。 7.主键列上一定要建立索引。 8.在那些重复值比较多、查询较少的列上不要建立索引。 9.如果一张表既有聚集索引也有非聚集索引,应先建10.立聚集索引后建立非聚集索引。 11.复合索引的列的最大数目是16,各列组合的最大长度为900B。 8.2 索引的操作 8.2.1 创建索引 SQL Server2005有3种创建索引的方法: 使用SQL Server Management Studio创建索引。 使用T-SQL语句中的Create Index语句创建索引。 使用Create Table或者Alter Table语句对表列定义主键约束或者惟一约束时,会自动创建主键索引和惟一索引。 使用T-SQL语句创建索引 语法: CREATE [UNQUE][CLUSTEREN|NONCLUSTERED]INDEX index_name ON (talbe_name|view_name) (column [ASC|DESC] [,…n] ) [WITH [PAD_INDEX] [[,]FILLFACTOR=填充因子] [[,]IGNORE_DUP_KEY] [[,]DROP_EXISTING] [[,]SORT_IN_TEMPDB] ] 使用T-SQL语句创建索引(续) 【案例8-2】在student数据库中,为“系部”表创建基于“系部名称”列的唯一、非聚集索引xb_xbmc_index。SQL语句如下: Use stu if exists (select name from sys.indexes where name=Nxb_xbmc_index) drop index xb_xbmc_index on department --检查xb_xbmc_index是否存在,如果存在,删除它

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档