第6章索引(论文资料).pptVIP

  • 6
  • 0
  • 约3.41千字
  • 约 20页
  • 2017-01-01 发布于重庆
  • 举报
引: 请思考:在一个数据表中检索数据时是如何进行的? 如果采取逐行扫描的方式进行检索,可行吗? 有什么方法可提高检索效率? 第6章 索引 教学内容 基础知识: 索引的基本概念 创建索引 操作索引 学习目标 认知目标: 掌握索引的概念 理解创建索引的必要性 掌握几种索引类型的特点和它们适合的场合 能力目标: 掌握用命令方式创建索引的方法(重点、难点) 掌握查看、删除索引的方法(重点) 一、索引的基本概念 1. 索引的含义 索引:是对表或视图中的一列或多个列的值进行排序的一种物理结构,它由该表或视图中的一列或若干列值,以及这些列值的记录在数据表中存储位置的物理地址所组成。 索引如同书的目录 索引信息存放在索引页中,表中的数据存放在数据页中。 一、索引的基本概念 2.建立索引的优缺点 建立索引的优点 建立了索引的列作为查询条件时,数据的检索速度能大大地提高。 增加索引的不利方面 创建索引也要花费时间和占用物理空间。 虽然索引加快了检索速度,但减慢了数据修改的速度(因为每执行一次数据修改,就需要对索引进行维护)。 一、索引的基本概念 3. 使用索引的准则 何时创建索引? 在主键上 在用于连接的列(外键)上 在经常用作查询条件的列上 在经常要排序的列上 一、索引的基本概念 3. 使用索引的准则 何时可不考虑建立索引? 很少或从来不作为查询条件的列 在小表中的任何列 属于text、image、长度较大的char、varchar、binary等数据类型的列 当修改的性能需求远大于查询的性能需求时,不要创建索引 一、索引的基本概念 4. 索引的类型 按数据的物理存放顺序: 聚集索引:会改变表记录的物理存储顺序,使之与索引列的顺序完全相同(适用于范围搜索)。 非聚集索引:不改变表记录的存放顺序(适用于直接匹配单个条件的查询)。 按索引列取值的唯一性: 唯一索引:要求被索引列不能有重复值,也不能有两个NULL。 非唯一索引:不存在这一限制。 按索引列的个数:单索引、复合索引 二、创建索引 1. 创建索引的方法 系统自动建立索引 人工创建索引 T-SQL命令方式(掌握) 企业管理器方式 使用索引管理器 二、创建索引 2. 系统自动建立索引 添加主键约束时 系统会自动在表中生成一个聚集惟一索引。 在xsqk表的“学号”列上已创建了聚集惟一索引(名为PK_xsqk) 在xs_kc表的“学号和课程号”两列上已创建了聚集惟一索引 在kc表中的“课程号”列上已创建了聚集惟一索引 添加惟一性约束时 系统会自动在表中生成一个非聚集惟一索引。 二、创建索引 2. 系统自动建立索引 实例1:创建一个名为test的表,其结构定义如下。 use xscj create table test (课程号 smallint constraint pk_test primary key, 课程名 char(14) constraint uq_test unique, 授课教师 char(10) ) 二、创建索引 3. 手工建立索引—(1)表索引 命令格式 create [ unique ] [ clustered | nonclustered ] index 索引名 on { 表名 | 视图名 } ( 列名 [ asc | desc ] [ ,...n ] ) 说明: 一个表中只能创建1个聚集索引。 由于系统已自动在主键上创建了聚集索引,所以用户不能再创建,除非先删除已有的。 一个表中可以创建249个非聚集索引。 一个索引中最多包含16列(复合索引),且不超过900字节。 二、创建索引 3. 手工建立索引—(1)表索引 实例2:在kc表的“课程名”列上创建一个非聚集索引,索引名为“ix_kcm”,并降序排列。 实例3:在kc表中,重新创建名为“ix_kcm”的索引,使其成为惟一性的非聚集索引。 二、创建索引 3. 手工建立索引—(1)表索引 实例4:已知xs_kc表中的“学号”和“课程号”两列已设置为主键,主键约束名为“PK_xs_kc”,请重新创建这两列的组合索引,使学号降序排列,使索引页填满60%后就换新页进行填充。 二、创建索引 3. 手工建立索引—(1)表索引 课堂练习1:已知xsqk表中的“学号”列已设置为主键,请在“姓名”和“所在系”两列上创建名为“ix_name_xi”的索引,按姓名降序排列,并使索引页填满60%后就换新页进行填充。 请考虑:是否要创建惟一性索引?能否创建聚集索引? 三、操作索引 1. 强制使用索引 创建索引后,在查询时SQL Server会自动选择合适的索引;也可由用户指定要使用的索引. 语法格式: select 列名表

文档评论(0)

1亿VIP精品文档

相关文档