当前课程知识点:SQL SERVER数据库技术 >  第6章 实现索引 >  6.1 索引的概述 >  索引的技巧

返回《SQL SERVER数据库技术》慕课在线视频课程列表

索引的技巧资料文件与下载

索引的技巧

SQL Server中,为了查询性能的优化,有时我们就需要对数据表通过建立索引的方式,目的主要是根据查询要求,迅速缩小查询范围,避免全表扫描。

索引有两种类型分别是聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)

聚集索引在一个表中只能有一个,默认情况下在主键建立的时候创建,它是规定数据在表中的物理存储顺序,我们也可以取消主键的聚集索引,所以必须考虑数据库可能用到的查询类型以及使用的最为频繁的查询类型,对其最常用的一个字段或者多个字段建立聚集索引或者组合的聚集索引,它就是SQL Server会在物理上按升序(默认)或者降序重排数据列,这样就可以迅速的找到被查询的数据。

非聚集索主要是数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。索引中的项目按索引键值的顺序存储,而表中的信息按另一种顺序存储。可以在一个表格中使用高达249个非聚集的索引,在查询的过程中先对非聚集索引进行搜索,找到数据值在表中的位置,然后从该位置直接检索数据。这使非聚集索引成为精确匹配查询的最佳方法,因为索引包含描述查询所搜索的数据值在表中的精确位置的条目。

所以我们在选择创建聚集索引的时候要注意以下几个方面:

1) 对表建立主键时,就会为主键自动添加了聚集索引,如自动编号字段,而我们没有必要把聚集索引浪费在主键上,除非你只按主键查询,所以会把聚集索引设置在按条件查询频率最高的那个字段或者组合的字段。

2) 索引的建立要根据实际应用的需求来进行,并非是在任何字段上建立索引就能提高查询速度。聚集索引建立遵循下面几个原则:

包含大量非重复值的列。

使用下列运算符返回一个范围值的查询:BETWEEN>>=< <=

被连续访问的列。

返回大型结果集的查询。

经常被使用联接或 GROUP BY 子句的查询访问的列;一般来说,这些是外键列。对ORDER BY GROUP BY 子句中指定的列进行索引,可以使 SQL Server 不必对数据进行排序,因为这些行已经排序。这样可以提高查询性能。

 OLTP 类型的应用程序,这些程序要求进行非常快速的单行查找(一般通过主键)。应在主键上创建聚集索引。

举例来说,银行交易日志中对交易日期建立聚合索引,数据物理上按顺序存于数据页上,重复值也排列在一起,因而在范围查找时,可以先找到这个范围的起末点,且只在这个范围内扫描数据页,避免了大范围扫描,提高了查询速度。而如果我们对员工的基本信息表中性别的字段列上建立聚集索引,就完全没有必要,因为内容里只涉及到 “男”与“女”两个不同值。

3) 在聚集索引中按常用的组合字段建立索引,形成复合索引,一般在为表建立多个主键的时候就会产生,如果一个表中的数据在查询时有多个字段总是同时出现则这些字段就可以作为复合索引,这样能形成索引覆盖,提高where语句的查询效率。

4)索引对查询有一这的优化,但由于改变一个表的内容,将会引起索引的变化。频繁的对数据操作如insert,update,delete语句将导致系统花费较大的代价进行索引更新,引起整体性能的下降。一般来讲,在对查询性能的要求高于对数据维护性能要求时,应该尽量使用索引,有时在这种操作数据库比较频繁的某些极端情况下,可先删除索引,再对数据库表更新大量数据,最后再重建索引,新建立的索引总是比较好用。

索引在使用了长久的时候,就会产生很多的碎片,查询的性能就会受到影响,这时候有两种方法解决,一是利用DBCC INDEXDEFRAG整理索引碎片,还有就是利用DBCC DBRE

下一节:索引简介

返回《SQL SERVER数据库技术》慕课在线视频列表

SQL SERVER数据库技术课程列表:

第1章 SQL SERVER系统概述

-1.1 数据库基础知识

--数据库的概念

--数据库概念

--数据模型(1)

--数据模型(2)

--数据模型

--实体间的联系

--E-R图

--数据技术的发展

--数据库技术发展

-1.1 数据库基础知识--作业

-1.2 SQL SERVER简介

--Microsoft SQL Server简介

--SQLSERVER简介

--数据库应用场景

--企业应用

--第1章 安装和配置 SQL Server 2008

--安装与配置

-1.2 SQL SERVER简介--作业

-1.3 课堂练习-安装和配置SQL SERVER2008

--安装和配置 SQL Server 2008

--DOS命令下的程序源代码

-职场小故事之一——数据库工程师采访录(1)

--职场小故事——数据库工程师采访录(1)

-SQL SERVER系统概述-讨论

第2章 创建与管理数据库

-2.1 数据库对象及构成

--sql server 2008数据库中的文件和文件组的详解

--管理数据库和文件

--创建文件组

--SQL Server 2008文件与文件组

--文件和文件组

-2.1 数据库对象及构成--作业

-2.2 创建数据库

--使用SQL SERVER Management Studio创建数据库

--使用企业管理器创建XK数据库

--创建数据库-程序源代码

--使用T-SQL语句创建数据库(操作演示)

--创建数据库(含次数据库文件)

-2.2 创建数据库--作业

-2.3 修改数据库

--新增两个次数据文件——程序源代码

--显示数据库中所有文件组信息——程序源代码

--使用T-SQL语句在数据库中新增文件组(操作演示)

--创建数据库-程序源代码

--使用T-SQL扩充数据库或事务日志的容量-01(操作演示)

--使用T-SQL扩充数据库或事务日志的容量-02(操作演示)

--缩小数据库和数据文件——程序源代码

--将数据库的数据文件收缩为5MB——程序源代码

--修改或查看数据库选项(操作演示)

-2.3 修改数据库--作业

-2.4 重命名或删除数据库

--数据库重命名为XK——程序源代码

--删除XK数据库——程序源代码

--重命名或删除数据库(操作演示)

-2.4 重命名或删除数据库--作业

-2.5 课堂练习-创建数据库和数据库文件

--创建数据库和数据库文件-项目训练

--创建数据库——程序源代码

-职场小故事之二 数据库工程师采访录(2)

--职场小故事——数据库工程师采访录(2)

-创建与管理数据库

第3章 创建与管理数据表

-3.1 数据表设计

--数据库中表的十二个设计原则

--数据表设计

--查找SQL数据库中的空值

--创建与管理数据表-空值

-3.1 数据表设计--作业

-3.2 创建数据表

--创建数据表

--使用企业管理器创建course数据表(操作演示)

--创建班级信息表Class

--创建学生信息表Student

--创建学生选课表StuCou

--使用T-SQL创建数据表(操作演示)

-3.2 创建数据表--作业

-3.3 修改数据表结构

--新增列-程序源代码

--删除列——程序源代码

--新增或删除列(操作演示)

--修改列——程序源代码

--重命名列——程序源代码

--修改列定义或重命名列

-3.3 修改数据表结构--作业

-3.4 删除数据表

--删除表——程序源代码

--使用T-SQL删除数据表(操作演示)

-3.4 删除数据表--作业

-3.5 课堂练习-创建数据类型和数据表

--数据类型详解

-- 创建数据类型和表

--程序源代码

-3.5 课堂练习-创建数据类型和数据表--作业

-扩展知识

--数据类型详解

-职场小故事之三——数据库工程师是干什么的?

--职场小故事——数据库工程师是干什么的?

-创建与管理数据表

第4章管理数据表中的数据

-4.1 合并多个查询结果中的数据

--union和union all的区别

--合并多个查询结果中的数据

-4.1 合并多个查询结果中的数据--作业

-4.2 抽取数据到另一个表中

--SELECT INTO 语法结构详解

--抽取数据到另一个表中

-4.2 抽取数据到另一个表中--作业

-4.3 添加数据

--向表中添加数据——程序源代码

--向表中添加4行数据(使用INSERT语句)

--将表中数据复制到新表中——程序源代码

--向表中添加数据

-4.3 添加数据--作业

-4.4 更新数据

--将“电子出版概论”课程的上课时间修改为“周二晚”——程序源代码

--将“01数据库”班级所有学生的选课密码初始化为#*3456

--更新表中的数据

-4.4 更新数据--作业

-4.5 删除数据

--学生为“00000005”的学生因故取消课程编号为“017”的选修课

--学号为“0000005”的学生因故取消“中餐菜肴制作”选修课——程序源代码

--删除表中数据

-4.5 删除数据--作业

-4.6 课堂练习

--插入数据——程序源代码

-职场小故事之四——冯玉才:“背”着数据库闯天下

--冯玉才:“背”着数据库闯天下

-管理数据表中的数据

第5章 查询与统计数据

-5.1 查询单个数据表数据

--从课程表中查询所有课程的信息

--使用星号(*)显示表的所有列

--查询数据——程序源代码

--改变查询显示结构的列标题(操作演示)01

--改变查询显示结构的列标题(操作演示)02

--消除Kind列值都相同的那些重复行

--消除查询结果的重复行

--从学生表中查询所有的信息,显示前6行

--返回查询结果的前N行

--查询课程表的信息,要求给出查询结果

--在查询结果中增加要显示的字符串

--Select语句语法结构

--查询学号为“0000001”同学的姓名和班级编号

--使用WHERE子句限制查询条件

--在课程表中查询周二有哪些选修课,并排序

--LIKE实现模糊查询(操作演示)

--查询学生选课表中随机数为空的课程信息

--查询指定列未输入值的数据行

--查询课程表的课程信息、报名人数与限选人数之比

--将表达式作为查询列

-5.1 查询单个数据表数据--作业

-5.2 使用聚合函数查询

--统计课程表中共有多少门选修课

--使用聚合函数查询

--查看课程表中最少报名人数、最多报名人数和平均报名人数

--使用聚合函数查询MIN-MAX

--查看课程表中能提供多少人选修课程

--使用聚合函数查询SUM

-5.2 使用聚合函数查询--作业

-5.3 使用分组查询结果

--按课程类别分组统计各类课程的门数

--按课程类别分组统计各类课程的门数,并给出课程总门数

--查看报名人数大于15的各类课程的最少报名人数和最多报名人数

--查看报名人数大于15并且每组平均报名人数大于30的课程类别和各组的平均报名人数

--查看课程类别为“信息技术”、“管理”的平均报名人数,并给出其他课程类别

--使用分组查询

-5.3 使用分组查询结果--作业

-5.4 排序查询结果

--查询课程表的所有信息,按照报名人数排序

--重新排序查询结果

-5.4 排序查询结果--作业

-5.5 多表连接查询数据

--对CLASS表与student表的使用交叉连接查询

--查看学生基本信息和所在班级的信息

--查看学生基本信息和学生所在班级名称

--比较连接查询

--多表连接查询数据

-第5章 查询与统计数据-作业

-5.6 课堂练习-查询与统计数据

--程序源代码

-职场小故事之五——IT独行侠数据库独立咨询顾问牛新庄的故事

--职场小故事—IT独行侠数据库独立咨询顾问牛新庄的故事

-查询与统计数据

第6章 实现索引

-6.1 索引的概述

--索引的技巧

--索引简介

--索引的分类

--索引的分类

-6.1 索引的概述--作业

-6.2 创建索引

--SQL SERVER 2005创建索引

--使用管理工具创建索引

--用户需要按照课程名称查询信息,希望提高查询速度

--创建索引

-6.2 创建索引--作业

-6.3 重命名索引

--将sutdent表的IX_STUNAME索引重命名为IX_STUNAMENEW

--重命名索引

-6.3 重命名索引--作业

-6.4 删除索引

--删除索引

--使用管理工具删除索引

--删除course表上名字为IX_CouName的索引

--删除索引

-6.4 删除索引--作业

-6.5 索引分析

--查询姓“林”的学生信息,分析哪些索引被系统采用

--查询学号为“00000001”的学生信息,分析哪些索引被系统采用

--查询名为"林斌"的学生,分析执行该数据花费的磁盘活动量信息

--分析索引

-6.5 索引分析--作业

-6.6 索引维护

--使用UPDATE STATISTICS更新索引的统计信息

--使用DBCC SHOWCONTIG扫描索引碎片信息

--使用DBCC INDEXDEFRAG进行碎片整理

--维护索引

-6.6 索引维护--作业

-6.7 课堂练习-创建和优化索引

--创建和优化索引

--程序源代码

-职场小故事之六——数据库安全门事件

--职场小故事——“数据库安全门事件”

-实现索引

第7章 实施数据完整性

-7.1 数据完整性概述

--数据完整性的概述

--数据完整性概述

-7.1 数据完整性概述--作业

-7.2 创建约束

--创建主键约束

--创建主键约束

--添加唯一约束

--创建唯一约束

--约束的STUNO列值只允许为8位数字,并且不可以为8个0

--删除检查约束

--创建检查约束

--为STUCOU表添加默认约束,STATE列的默认值“报名”

--创建默认约束

--创建基于stuno的外键约束

--创建外键约束

-7.2 创建约束--作业

-7.3 创建默认值

--创建并绑定默认值

--创建默认值

--解除默认值UnsureDefault与Teacher列的绑定

--删除默认值

-7.3 创建默认值--作业

-7.4 创建规则

--创建规则CreditRule

--创建规则

--解除规则CreditRule与Course表Credit列的绑定

--删除规则

-7.4 创建规则--作业

-7.5 课堂练习-实现数据完整性

-- 实现数据完整性

--程序源代码

-职场小故事之七——数据库工程师的发展前景

--职场小故事——数据库工程师的发展前景

-实施数据完整性-讨论

第8章 创建与管理视图

-8.1 视图的概述

--视图的基本概念

--视图简介

-8.1 视图的概述--作业

-8.2 创建视图

--创建视图

--创建视图

-8.2 创建视图--作业

-8.3 修改视图

--修改视图V_Student

--修改视图并加密

--修改视图

-8.3 修改视图--作业

-8.4 重命名视图

--重命名视图注意事项

--重命名视图开始之前

--重命名视图

--重命名视图

-8.4 重命名视图--作业

-8.5 删除视图

--SQL Server删除视图的两种方法

--删除视图

--删除视图

-8.5 删除视图--作业

-8.6 课堂练习-实现视图

-- 实现视图

--程序源代码

-职场小故事之八——数据库面对的工作岗位及职责

--职场小故事—数据库面对的工作岗位及职责

-创建与管理视图-讨论

第9章 创建与管理存储过程

-9.1 存储过程概述

--存储过程的基本概念

--存储过程的基本概念

--存储过程的优点

--存储过程的优点

-9.1 存储过程概述--作业

-9.2 创建与执行不带参数的存储过程

--创建存储过程,返回学生表中班级编号为“20000001”的所有数据行

--执行存储过程

--创建和执行存储过程

-9.2 创建与执行不带参数的存储过程--作业

-9.3 创建与执行带参数的存储过程

--创建带输入参数的存储过程

--执行带输入参数的存储过程

--创建和执行带输入参数的存储过程

--创建带输出参数存储过程,将学生人数返回给用户

--执行存储过程

--创建和执行带输出参数的存储过程

-9.3 创建与执行带参数的存储过程--作业

-9.4 修改存储过程

--修改存储过程,根据用户信息进行模糊查询,并加密

--修改的存储过程

-9.4 修改存储过程--作业

-9.5 删除存储过程

--删除存储过程

--删除存储过程

-9.5 删除存储过程--作业

-9.6 课堂练习-实现存储过程和函数

-- 实现存储过程和函数

--程序源代码

-职场小故事之九——数据库错误致虎航安全事故

--职场小故事——数据库错误致虎航安全事故

-创建与管理存储过程-讨论

第10章 创建与管理触发器

-10.1 触发器概述

--触发器的概念及作用

--触发器的概述

-10.1 触发器概述--作业

-10.2 创建触发器

--创建触发器

--测试触发器

--创建触发器

-10.2 创建触发器--作业

-10.3 修改触发器

--修改已创建的触发器

--测试结果

--修改触发器

-10.3 修改触发器--作业

-10.4 删除触发器

--删除触发器

--删除触发器

-10.4 删除触发器--作业

-10.5 禁用或启用触发器

--禁用触发器

--启用触发器

--禁用或启用触发器

-10.5 禁用或启用触发器--作业

-10.6 课堂练习-管理触发器

--程序源代码

-职场小故事之十——韩国农协银行事件透视数据库安全问题

--职场小故事——韩国农协银行事件透视数据库安全问题

-创建与管理触发器-讨论

第11章 SQL SERVER安全管理

-11.1 SQL SERVER安全机制

--安全设计理念

--安全管理-启用或停止

--SQL SERVER验证模式

-11.1 SQL SERVER安全机制--作业

-11.2 管理登录名和用户

--安全管理-连接或断开

--连接或断开数据库引擎

--安全管理-创建WIN用户身份登录名

--创建登录名

-11.2 管理登录名和用户--作业

-11.3 管理角色

--角色

--SQL SERVER 中服务器角色与数据库角色区别

-11.3 管理角色--作业

-11.4 管理权限

--安全管理-撤销权限-修改权限

--SQL Server权限的分配管理

--T-SQL管理权限

--创建登录名

--创建用户

--使用存储过程收回角色权限

--授予USER2创建表的权限

-11.4 管理权限--作业

-11.5 课堂练习-管理安全性

--管理安全性

--程序源代码

-11.5 课堂练习-管理安全性--作业

-职场小故事之十一——银行账号“泄密”虚惊

--职场小故事——银行账号“泄密”虚惊

-SQL SERVER安全管理-讨论

第12章 管理与维护数据库

-12.1 脱机后复制数据库文件

--脱机或联机数据库文件

--数据库脱机操作

-12.1 脱机后复制数据库文件--作业

-12.2 备份与还原数据库

--备份与还原数据库文件

--数据库的备份与还原

-12.2 备份与还原数据库--作业

-12.3 数据的导入和导出

--数据导入与导出

--导出导入sql2008全部数据

-12.4 复制数据库

--复制数据库

--数据库复制

-12.5 课堂练习-灾难恢复

-- 灾难恢复

--程序源代码

-职场小故事之十二——2011年数据库泄密事件

--职场小故事——2011年数据库泄密事件

-管理与维护数据库-讨论

第13章 visual studio 2010应用开发实例

-13.1 windows应用程序开发

--Windows应用程序开发

--Windows 应用程序开发

-13.1 windows应用程序开发--作业

-13.2 ASP.NET网站开发

--ASP.NET开发

--asp.net的SQL Server编程

-13.2 ASP.NET网站开发--作业

-visual studio 2010应用开发实例-讨论

附录-国家软件开发文档标准

-国家软件开发文档标准

--操作手册编写规范

--测试分析报告编写规范

--测试计划文档编写规范

--概要设计说明书编写规范

--开发进度月报编写规范

--模块开发卷宗编写规范

--软件配置管理计划编写规范

--软件需求说明书编写规范

--软件质量保证计划编写规范

--数据库设计说明书编写规范

--数据要求说明书编写规范

-- 详细设计说明书编写规范

-- 项目开发总结报告编写规范

--用户手册编写规范

索引的技巧笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。