Download presentation
Presentation is loading. Please wait.
1
第8章 索 引(Index) 8.1 索引概述 8.2 创建索引 8.3 修改和删除索引
2
能力目标 理解索引的定义和分类; 掌握创建和维护索引的各种方法; 掌握索引的用法。
3
态度目标 团队精神; 态度积极; 任务按时完成; 出勤。
4
重点难点 重点: 索引的用法。 难点:
5
8.1 索引概述 1. 索引(Index) 索引(Index)是数据库中的一个列表,该列表 包含了某个数据表中的一列或几列值的集合,以及
8.1 索引概述 1. 索引(Index) 索引(Index)是数据库中的一个列表,该列表 包含了某个数据表中的一列或几列值的集合,以及 这些值的记录在数据表中存储位置的物理地址。
6
8.1 索引概述 2. 索引分类 聚集索引( Clustered Index ):聚集索引重新
8.1 索引概述 2. 索引分类 聚集索引( Clustered Index ):聚集索引重新 组织表中的数据以按指定的一个或多个列的值排序, 在该类型的索引中,记录行的物理存储顺序与索引 顺序一致,即索引的顺序决定了表中行的顺序。 非聚集索引(Nonclustered Index):非聚集索 引不重新组织表中的数据,索引仅仅记录指向表中 行的位置的指针,它的叶节点中存储了组成非聚集 索引的列的值和行定位指针,通过这些有序的指针 可以快速定位行记录。
7
8.2 创建索引 1. 索引的自动创建 在创建表的过程中,在创建主键(Primary Key) 或唯一性约束时, 系统会自动创建
8.2 创建索引 1. 索引的自动创建 在创建表的过程中,在创建主键(Primary Key) 或唯一性约束时, 系统会自动创建 一个唯一索引, 该索引可以是聚 集索引或非聚集 索引。
8
8.2 创建索引 2. 使用“SQL Server Management Studio” 管理工具 创建索引
9
8.2 创建索引 3. 使用Transac-SQL语句创建索引
8.2 创建索引 3. 使用Transac-SQL语句创建索引 CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON <object> ( column [ ASC | DESC ] [ ,...n ] ) [ INCLUDE ( column_name [ ,...n ] ) ] [ WITH ( <relational_index_option> [ ,...n ] ) ] [ ON { partition_scheme_name ( column_name ) | filegroup_name | default } ][ ; ]
10
8.2 创建索引 3. 使用Transac-SQL语句创建索引 【案例8.1】在employees表上以hiredate字段创建索
8.2 创建索引 3. 使用Transac-SQL语句创建索引 【案例8.1】在employees表上以hiredate字段创建索 引hiredate_ndx。 CREATE INDEX hiredate ON employees (hiredate) 【案例8.2】在 sales 表上以cust_id列创建索引,并 且强制唯一性。 CREATE UNIQUE NONCLUSTERED INDEX sale_cust_ndx ON sales (cust_id)
11
8.2 创建索引 3. 使用Transac-SQL语句创建索引 使用IGNORE_DUP_KEY参数,在products表上
8.2 创建索引 3. 使用Transac-SQL语句创建索引 【案例8.3】 使用IGNORE_DUP_KEY参数,在products表上 以ProType列创建唯一索引,如果输入了重复的键, 将忽略该INSERT或UPDATE语句。 CREATE UNIQUE NONCLUSTERED INDEX protype_ndx ON products(ProType) WITH IGNORE_DUP_KEY
12
8.2 创建索引 4. 创建索引视图 【案例8.4】 根据customers和sales创建视图ust_order_view,视
8.2 创建索引 4. 创建索引视图 【案例8.4】 根据customers和sales创建视图ust_order_view,视 图中包含order_id、Pro_id、customer、Quantity列。再 使用Transact-SQL语句根据order_id列创建索引视图。 USE eTradeInfo GO CREATE VIEW cust_order_view WITH SCHEMABINDING AS SELECT S.order_id, Pro_id, customer, Quantity FROM customers C, Sales S, Sale_detail D WHERE C.cust_id = S.cust_id AND S.Order_id = D.Order_id 在视图cust_order_view上创建索引: CREATE UNIQUE CLUSTERED INDEX cust_order_view_ndx ON cust_order_view(order_id) 如果在查询中 频繁使用视图,可 以通过对视图创建 唯一聚集索引来提 高查询性能。
13
8.3 修改和删除索引 1. 使用“SQL Server Management Studio”管理工具 修改索引
14
8.3 修改和删除索引 2. 使用Transact-SQL语句删除索引 使用Transact-SQL语言中的DROP INDEX语句
8.3 修改和删除索引 2. 使用Transact-SQL语句删除索引 使用Transact-SQL语言中的DROP INDEX语句 删除索引的常用语法格式如下: 参数:index:是要除出的索引名称。 object:table | view:是索引列所在架构上的 表或索引视图。 n:是表示可以指定多个索引的占位符。 【案例8.5】删除eTradeInfo数据库sales表上的索引 sale_cust_ndx。 DROP INDEX { < index_name ON <object> [ ,...n ] } DROP INDEX dbo.sales.sale_cust_ndx
15
Management Studio ” 管理窗口中,完成索引创建。 1. 在表employees上创建一个索引,使用字段emp_id和
案例分析 使用案例数据库 eTradeInfo ,在 “ SQL Server Management Studio ” 管理窗口中,完成索引创建。 1. 在表employees上创建一个索引,使用字段emp_id和 hiredate作为索引字段。 2. 使用 Transact-SQL 语句,在表Sales上创建一个索引, 使用字段 cust_id、emp_id 和orderdate作为索引字段,并在 “新建查询”窗口中完成调试。 3. 在进货合同表(BuyOrder)上,按照签订合同日期 创建一个非聚集索引,填充因子为10。 4. 在入库单表(EnterStock)上,以入库人和热库时间 创建一个非聚集索引。 5. 在销售和同(Sales)上,以销售部门编号、签订合 同人编号创建一个非聚集索引。
16
1. 用“SQL Server Management Studio”和T-SQL 语句创建索引,并在“SQL编辑器”窗口中调试;
案例分析 要求: 1. 用“SQL Server Management Studio”和T-SQL 语句创建索引,并在“SQL编辑器”窗口中调试; 2. 正确区分索引的种类; 3. 索引修改方法。 问题: 1. 通过创建表中的主键可以自动创建何种类型 的索引? 2. 一个表中聚簇索引可以唯一吗? 讨论: 为何在创建表时最好创建主键?
17
索引的概念、分类以及使用索引的一些原则。 使用“SQL Server Management Studio”管理工具和
本章小结 索引的概念、分类以及使用索引的一些原则。 使用“SQL Server Management Studio”管理工具和 Transact-SQL语法创建、修改和删除索引等。 在一个数据表上只能建立一个聚集索引,可以建 立最多249个非聚集索引。 聚集索引对表中的数据行完全重新排序,用聚 集索引查询数据记录比较快。 非聚集索引具有完全独立于数据行的结构,存储 了索引关键字的值和记录行定位器,它使用索引页的 存储结构,它比聚集索引需要较少的存储空间,其检 索效率较聚集索引低。
Similar presentations