第10讲 索引视图.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10讲 索引视图

索引与视图 索引 索引是对数据库表中一个或多个列(例如,student 表的姓名 (sname) 列)的值进行排序的结构。 可以利用索引快速访问数据库表中的特定信息。索引有助于更快地获取信息。 索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些指针。 数据库使用索引的方式与使用书的目录很相似: 通过搜索索引找到特定的值,然后跟随指针到达包含该值的行。 一个表可以创建多个索引,索引又可以增加查询速度,那索引是否越多越好? 通常情况下,只有当经常查询索引列中的数据时,才需要在表上创建索引。 索引将占用磁盘空间,并且降低添加、删除和更新行的速度。 不过在多数情况下,索引所带来的数据检索速度的优势大大超过它的不足之处。 然而,如果应用程序非常频繁地更新数据,或磁盘空间有限,那么最好限制索引的数量。 可基于数据库表中的单列或多列创建索引。 最好把where和join子句中涉及的列包含在索引中。 索引类型 三种类型的索引 :唯一索引、主键索引和聚集索引。 唯一索引 唯一索引不允许两行具有相同的索引值。 注意:尽管唯一索引有助于找到信息,但为了获得最佳性能,建议使用主键约束或唯一约束。 如果现有数据中存在重复的键值,数据库将拒绝此唯一索引的创建。 关键词:Unique 举例:CREATE UNIQUE INDEX Idx1 ON s(sno) 主键索引 数据库表通常有一列或列组合,其值用来唯一标识表中的每一行。该列称为表的主键。 为表定义一个主键将自动创建主键索引 。 主键索引是唯一索引的特殊类型。 关键词: primary key 主键(约束) create table stu( sno int primary key nonclustered, sname char(10), sage int, ssex varchar(20)) 注意:默认主键约束在默认情况下自动创建 聚集索引。 聚集索引 在聚集索引中,表中各行的物理顺序与键值的逻辑(索引)顺序相同。表只能包含一个聚集索引。 如果不是聚集索引,表中各行的物理顺序与键值的逻辑顺序不匹配。聚集索引比非聚集索引有更快的数据访问速度。 关键词:clustered 聚集的;nonclustered非聚集的 Create clustered index Idx2 on s(sname) Set Nocount SET NOCOUNT 使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。 语法 SET NOCOUNT { ON | OFF } 注释 当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。 举例 SET NOCOUNT OFF USE pubs IF EXISTS (SELECT name FROM sysindexes WHERE name = au_id_ind) DROP INDEX authors.au_id_ind GO USE pubs CREATE INDEX au_id_ind ON authors (au_id) GO 注意: sysindexes系统表:数据库中的每个索引和表在表中各占一行。该表存储在每个数据库中。 唯一聚集索引 CREATE UNIQUE CLUSTERED INDEX employeeID_ind ON emp_pay (employeeID) 组合索引 CREATE INDEX emp_order_ind ON order_emp (orderID, employeeID) 为视图创建索引 CREATE UNIQUE CLUSTERED INDEX IV1 ON V1 (OrderDate, ProductID) 和在表上创建格式完全一样 限制:view 必须使用 SCHEMABINDING 定义视图才能在视图上创建索引。视图定义也必须具有确定性。如果选择列表中的所有表达式、WHERE 和 GROUP BY 子句都具有确定性,则视图也具有确定性。而且,所有键列必须是精确的。只有视图的非键列可能包含浮点表达式(使用 float 数据类型的表达式),而且 float 表达式不能在视图定义的其它任何位置使用。 不确定性的表达式,如不确定性函数,如GETDATE,USER_NAME , SYSTEM_USER 索引总结 数据库中可以创建聚集索引。 在聚集索引中,表中各行的物理顺序与索引键值的逻辑(索引)顺序相同。 表只能包含一个聚集索引。 聚集索引通常可加快 UPDATE 和 DELETE 操作的速度,因为这两个操作需要读取大量的数据。但

文档评论(0)

wyjy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档