05、索引的创建与使用

合集下载

SQLServer索引进阶第十二篇:索引的创建,修改和删除

SQLServer索引进阶第十二篇:索引的创建,修改和删除

SQLServer索引进阶第⼗⼆篇:索引的创建,修改和删除索引设计是数据库设计中⽐较重要的⼀个环节,对数据库的性能其中⾄关重要的作⽤,但是索引的设计却⼜不是那么容易的事情,性能也不是那么轻易就获取到的,很多的技术⼈员因为不恰当的创建索引,最后使得其效果适得其反,可以说“成也索引,败也索引”。

本系列⽂章来⾃,然后经过我们团队的理解和整理发布在,希望对⼴⼤的技术朋友在如何使⽤索引上有所帮助系列⽂章索⽬录:创建、修改和删除索引是属于索引维护部分中的内容,作为数据库对象,索引同样也⽤CREATE, ALTER和 DROP这三个DDL语句进⾏操作。

但不同的是,对于索引来说这⼏个语句所能提供的功能要远远超过其名字所⽰,允许你创建、整理、删除甚⾄修改索引的metadata。

当你创建或是修改索引时,你可以设置⼀些参数,这些参数作为索引的⼀部分存储在系统表中,你可以通过sys.indexes系统视图进⾏查看。

当SQL Server查询或更新数据以及维护索引时需要这些数据来帮助更好的完整任务。

本篇⽂章将会讲到这些参数,但不会深⼊细节。

索引所在的表越⼤时,对其索引的DLL语句影响也就越⼤。

这个影响表现在对于服务器资源的消耗和降低查询执⾏速度。

所以通过学习当执⾏DDL或DML语句时,索引内部的执⾏过程,你可以:理解为什么经常需要维护索引执⾏维护操作的过程尽量不降低性能减少维护索引过程对于其它查询的影响减少索引维护的频率创建索引我们⾸先创建聚集索引,然后创建⾮聚集索引。

创建聚集索引的内部过程取决于当前表的状态以及创建聚集索引过程中指定的参数。

假如:表已经是聚集索引了:发⽣错误,⼀个表中不能含有两个聚集索引,因为同⼀时间使得数据按照不同的物理顺序排列是不可能的。

表是空的:SQL Server仅仅更新系统表来让⾃⼰知道这个表是聚集索引结构.不需要分配空间。

表中有数据,但表上没有⾮聚集索引:SQL Server更新系统表来让⾃⼰知道这个表是聚集索引结构.SQL Server将表中的⾏按照索引键的数据进⾏排序,根据指定的填充因⼦将数据填充进页,然后⽣成索引的⾮叶⼦节点。

中南大学数据库题库05索引与视图

中南大学数据库题库05索引与视图

不允许记录中出现重复值和NULL值的索引是( )。

A 主键索引、普通索引B 主键索引、候选索引和普通索引C 主键索引和候选索引D 主键索引、候选索引和唯一索引参考答案C有表student(学号, 姓名, 性别, 身份证号, 出生日期, 所在系号),在此表上使用()语句能创建建视图vst。

A CREATE VIEW vst AS SELECT * FROM studentB CREATE VIEW vst ON SELECT * FROM studentC CREATE VIEW AS SELECT * FROM studentD CREATE TABLE vst AS SELECT * FROM student参考答案ASQL SERVER中,可为数据表创建()的三种类型的索引。

A 聚集索引、稀疏索引、辅索引B 聚集索引、唯一性索引、主键索引C 聚集索引、类索引、主键索引D 非聚集索引、候选索引、辅索引参考答案B在数据库物理设计阶段,需要考虑为关系表建立合适的索引。

关于建立索引的描述,有下列说法:Ⅰ.对于经常在其上需要执行查询操作并且数据量大的表,可以考虑建立索引Ⅱ.对于经常在其上需要执行插入、删除和更新操作的表,可以考虑建立索引Ⅲ.对于经常出现在WHERE子句中的属性,可以考虑建立索引Ⅳ.对于经常出现在ORDER BY子句、GROUP BY子句中的属性,应尽量避免建立索引上述说法正确的是A Ⅰ、Ⅱ和ⅢB Ⅰ、Ⅱ和ⅣC Ⅰ和ⅢD Ⅱ和Ⅳ参考答案C下列哪些属性不适合建立索引?A 经常出现在GROUP BY字句中的属性B 经常参与连接操作的属性C 经常出现在WHERE字句中的属性D 经常需要进行更新操作的属性参考答案D有会员卡表TableCards(CardsID,StartDate,Score),CardID表示卡标识,Scord为卡积分,有视图:CREATE VIEW vCardASSELECT * FROM TableCardsWHERE Score BETWEEN 200 AND 500假设(´C0001´,´2008/5/6´,220)是TableCards表中的一个元组,下述说法正确的是( )。

visualfoxpro6.0数据库上机教程

visualfoxpro6.0数据库上机教程
数据类型
VFP6.0支持多种数据类型,如字符型、数值型、日期型等,了解这些数据类型的特点和适用场景,有助于更好地设计数据库。
表结构设计
表是数据库中最基本的数据组织形式,掌握如何设计表结构,包括字段名、数据类型、长度等,是进行数据库设计的关键。
数据库设计
按照代码的先后顺序执行,是最基本的程序流程控制方式。
VFP6.0数据库系统在财务管理中的应用
物流计划管理
物流跟踪管理
物流数据分析
VFP6.0数据库系统在物流管理中的应用
VFP6.0数据库系统可以用于记录和管理企业的物流计划,包括运输计划、仓储计划等,实现物流计划的优化和自动化。
VFP6.0数据库系统可以用于实时跟踪和管理企业的物流状态,包括货物运输情况、货物到达时间等,提高物流管理的透明度和效率。
索引的创建与使用
查询的创建与执行
SQL语句的使用
通过查询获取符合特定条件的数据记录。
使用SQL语句进行数据的增删改查操作。
通过索引快速查找数据表中的记录。
04
CHAPTER
VFP6.0数据库系统的程序设计
VFP6.0数据库系统的程序设计基础
使用VFP6.0进行数据库设计,需要了解数据库的基本概念,如数据表、字段、记录等,以及如何创建和管理数据库对象。
字符型
逻辑型
用于存储文本数据,如字符串。
用于存储布尔值,即真或假。
数值型
日期型
备注型
用于存储数值数据,包括整数和小数。
用于存储日期和时间数据。
用于存储较长的文本数据。
关系运算符
如等于、不等于、大于、小于等。
算术运算符
如加、减、乘、除等。
逻辑运算符
如与、或、非等。

《数据库索引》课件

《数据库索引》课件
《数据库索引》ppt课件
目录 Contents
• 引言 • 数据库索引的类型 • 数据库索引的创建与维护 • 数据库索引的性能优化 • 数据库索引的案例分析 • 总结与展望
01
引言
数据库索引的定义
数据库索引是一种数据结构,用于快 速检索数据库表中的数据。它通过创 建一个指向表中数据的指针,提高了 查询速度和数据检索效率。
唯一索引
确保索引列的唯一性,但不要求非空 。
全文索引
用于文本搜索。
控制索引的列数
单列索引
只对单个列创建索引。
多列索引
对多个列创建复合索引,但查询 时需要满足复合索引的最左前缀 原则。
避免在索引列上使用函数或运算
01
避免在索引列上使用函数或运算 ,这会导致索引失效,从而影响 查询性能。
02
例如,应避免在索引列上使用 `UPPER()`、`LOWER()`、 `TRIM()` 等函数。
定期重建和重新组织索引
随着数据的插入、更新和删除,索引可能会变得碎片化,影 响性能。
定期重建和重新组织索引可以优化性能,并保持索引的健康 状态。
05
数据库索引的案例分析
案例一:使用索引优化查询性能
总结词
通过合理使用索引,可以显著提高数据库查询性能。
详细描述
在大型数据库中,如果没有索引,查询性能可能会变得很 差。通过创建合适的索引,可以快速定位到所需的数据, 大大减少查询时间。
全文索引
总结词
用于全文搜索的索引。
详细描述
全文索引是一种特殊的索引类型,主要用于全文搜索。全文索引将文本内容拆分成多个词汇,并建立词汇与记录 之间的对应关系,通过全文索引可以快速查找到包含特定词汇的记录。全文索引在文本搜索、内容筛选等方面具 有重要作用。

一文弄懂MySQL索引创建原则

一文弄懂MySQL索引创建原则

⼀⽂弄懂MySQL索引创建原则⽬录⼀、适合创建索引1、字段的数值有唯⼀性限制2、频繁作为Where查询条件的字段3、经常Group by和Order by的列4、Update、Delete的where条件列5、Distinct字段需要创建索引6、多表Join连接操作时,创建索引注意事项7、使⽤列的类型⼩的创建索引8、使⽤字符串前缀创建索引9、区分度⾼的列适合作为索引10、使⽤最频繁的列放到联合索引的左侧11、在多个字段都要创建索引的情况下,联合索引由于单值索引⼆、不适合创建索引1、在where中使⽤不到的字段不要设置索引2、数据量⼩的表最好不要使⽤索引3、有⼤量重复数据的列上不要建⽴索引5、不建议⽤⽆序的值作为索引6、删除不在使⽤或很少使⽤的索引7、不要定义冗余或重复的索引8、删除不在使⽤或很少使⽤的索引9、不要定义冗余或重复的索引总结⼀、适合创建索引1、字段的数值有唯⼀性限制根据Alibaba规范,指明在业务上具有唯⼀特性的字段,即使是组合字段,也必须建成唯⼀索引。

例如,学⽣表中的学号时具有唯⼀性的字段,为该字段建⽴唯⼀性索引可以快速查询出某个学⽣的信息,如果使⽤姓名的话,可能存在同名的情况,从⽽降低查询速度。

2、频繁作为Where查询条件的字段某个字段在Select语句的Where条件中经常被使⽤到,那么就需要给这个字段创建索引,尤其实在数据量⼤的情况下,创建普通索引就可以⼤幅提升查询效率。

⽐如测试表student_info有100万数据,假设查询student_id=112322的⽤户信息,如果没有对student_id字段创建索引,查询结果如下:select course_id, class_id, name, create_time,student_id from student_info where student_id = 112322;# 花费211ms为student_id创建索引后,查询结果如下:alter table student_info add index idx_sid(student_id);select course_id, class_id, name, create_time,student_id from student_info where student_id = 112322;# 花费3ms3、经常Group by和Order by的列索引就是让数据按照某种顺序进⾏存储或检索,因此当使⽤Group by对数据进⾏分组查询或使⽤Order by对数据进⾏排序的时候,就需要对分组或排序的字段进⾏索引。

数据库练习题

数据库练习题

数据库练习题数据库原理与应⽤教程―SQL Server期末测试题(⼀)⼀、填空题(每空1分,共10分)1.数据库系统的核⼼是___ __。

2.在关系模型中,实体以及实体间的联系都是⽤______来表⽰的。

3.设关系模型R(A,B,C),F是R上的函数依赖集,F={A→B,C→B},则R的候选码为_________。

4.层次模型⽤“树结构”来表⽰数据之间的联系,⽹状模型⽤“_________” 来表⽰数据之间的联系。

5.SQL Server2005中,⼀个简单的数据库可以只有⼀个_________⽂件和⼀个⽇志⽂件。

6.聚集索引和⾮聚集索引的存储结构都采⽤____________索引结构。

7.⼀个事务必须具有的四个属性是原⼦性、⼀致性、__________和持久性。

8.在T-SQL中,查询表中数据时,可⽤___________关键字滤掉重复⾏。

9.调⽤标量函数时必须提供⾄少由两部分组成的名称,即________. 函数名。

10.触发器是当数据库服务器中发⽣数据操作语⾔事件时会⾃动执⾏的存储过程。

⼆、选择题(每⼩题1分,共20分)1、数据管理的发展不包括下⾯哪个阶段()(A)⽂件系统(B)数据库系统(C)⼈⼯管理(D)统⼀管理2、⼀个学⽣可以同时借阅多本书,⼀本书只能由⼀个学⽣借阅,学⽣和图书之间是什么样的联系()(A)⼀对⼀(B)⼀对多(C)多对多(D)以上全不是3、如果事务1将数据库中的A值从200改为300,事务2读A值为300,事务1⼜将刚才的操作撤销,A值恢复为200,那么事务2读取了“脏”数据。

这种情况是由于数据库保护中的那⽅⾯不当⽽引起的()(A)并发控制 (B)完整性约束(C)安全性控制(D)数据库的恢复4、在关系模型中,“元组”是指( )(A)表中的⼀⾏(B)表中的⼀列(C)表中的⼀个数据(D)表中的⼀个成分5、有学⽣、选修和课程三个关系,学⽣S(学号,姓名,性别….),课程C(课程号,课程名),选修SC(学号,课程号,成绩)。

数据库期末复习题(学生)

数据库期末复习题(学生)

数据库原理与应用教程复习题(一)一、填空题(每空1分,共10分)1.数据库系统的核心是___ __。

2.在关系模型中,实体以及实体间的联系都是用______来表示的。

3.设关系模型R(A,B,C),F是R上的函数依赖集,F={A→B,C→B},则R的候选码为_________。

4.层次模型用“树结构”来表示数据之间的联系,网状模型用“_________” 来表示数据之间的联系。

5.SQL Server中,一个简单的数据库可以只有一个_________文件和一个日志文件。

6.聚集索引和非聚集索引的存储结构都采用____________索引结构。

7.一个事务必须具有的四个属性是原子性、一致性、__________和持久性。

8.在T-SQL中,查询表中数据时,可用___________关键字滤掉重复行。

9.调用标量函数时必须提供至少由两部分组成的名称,即________. 函数名。

10.触发器是当数据库服务器中发生数据操作语言事件时会自动执行的存储过程。

二、选择题(每小题1分,共20分)1、数据管理的发展不包括下面哪个阶段()(A)文件系统(B)数据库系统(C)人工管理(D)统一管理2、一个学生可以同时借阅多本书,一本书只能由一个学生借阅,学生和图书之间是什么样的联系()(A)一对一(B)一对多(C)多对多(D)以上全不是3、如果事务1将数据库中的A值从200改为300,事务2读A值为300,事务1又将刚才的操作撤销,A值恢复为200,那么事务2读取了“脏”数据。

这种情况是由于数据库保护中的那方面不当而引起的()(A)并发控制 (B)完整性约束(C)安全性控制(D)数据库的恢复4、在关系模型中,“元组”是指( )(A)表中的一行(B)表中的一列(C)表中的一个数据(D)表中的一个成分5、有学生、选修和课程三个关系,学生S(学号,姓名,性别….),课程C(课程号,课程名),选修SC(学号,课程号,成绩)。

ClickHouse入门 实战与进阶

ClickHouse入门 实战与进阶

目录分析
这部分主要介绍ClickHouse的高级功能和优化技巧。主要主题包括:分布式 集群、数据复制与分片、系统调优等。
目录分析
本书的章节安排合理,每个章节都有明确的内容和重点。以下是每个章节的 主要内容和作用:
目录分析
该章节主要介绍了ClickHouse的背景、发展历程和特点等,为读者提供了对 ClickHouse的基本认识,为后续章节的学习打下了基础。
阅读感受
除了理论知识,书中还提供了大量的实战案例。这些案例涵盖了不同行业和 场景,从基础的数据导入导出到复杂的数据分析和挖掘,每个案例都深入浅出地 讲解了实现过程和技巧。这些案例不仅能帮助读者更好地理解理论知识,还能为 他们在实际工作中提供参考和灵感。
阅读感受
在阅读这本书的过程中,我收获颇丰。我不仅深入了解了ClickHouse的核心 原理和技术,还通过大量的实战案例熟悉了如何在实际工作中应用ClickHouse。 作者们的专业素养和敬业精神也让我深受启发,激励我在学习和工作中更加努力 和进步。
作者简介
作者简介
这是《ClickHouse入门、实战与进阶》的读书笔记,暂无该书作者的介绍。
谢谢观看
精彩摘录
摘录:“在开始使用ClickHouse之前,我们需要先安装它。与大多数数据库 不同,ClickHouse可以直接从官方网站下载安装包。一旦安装完成,我们就可以 通过命令行或JDBC驱动程序来连接和操作数据库。”
精彩摘录
在实战篇中,我们将介绍如何使用ClickHouse处理和分析数据。ClickHouse 支持SQL查询和分析,并提供了许多高级功能来提高数据处理效率。例如,我们 可以使用ClickHouse的多元索引来加快查询速度,使用查询优化器来自动优化查 询计划,以及使用数据压缩来减少存储空间的需求。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
返回首页
上一页
下一页
模块四: 模块四:索引的创建与管理
SQL Server执行一次表扫描,将依次读取所有数据页。 执行一次表扫描, 执行一次表扫描 将依次读取所有数据页。 对只有10000行数据的小表来说,执行一次表扫描并不算很麻 行数据的小表来说, 对只有 行数据的小表来说 但如果雇员表的数据是现在的1000倍,100000倍,又该如 烦。但如果雇员表的数据是现在的 倍 倍 何呢?而且就算只有一条记录,并且记录就在第1页上 页上, 何呢?而且就算只有一条记录,并且记录就在第 页上,SQL Server也不得不在所有的数据页中查找所有的住址为北京的雇 也不得不在所有的数据页中查找所有的住址为北京的雇 员的名字。 员的名字。 如果在地址栏上增加一个索引,由于该索引包括一个指 如果在地址栏上增加一个索引, 向数据的指针, 向数据的指针,所以使用该索引完成相同查询的方式与表扫描 不同。 不同。DBMS只沿着索引排列的顺序对仅有一列数据的索引表 只沿着索引排列的顺序对仅有一列数据的索引表 进行读取,直到找到北京,然后DBMS按着索引指针的指向转 进行读取,直到找到北京,然后 按着索引指针的指向转 移到数据表上,查找到相应的数据。 移到数据表上,查找到相应的数据。由于索引总是按一定的顺 序进行排列, 序进行排列,所以对索引进行扫描的速度要大于对表进行扫描 的速度。 的速度。
模块四: 模块四:索引的创建与管理
模块四:索引的创建与使用
任务一: 任务一:索引的概述 任务二: 任务二:创建索引 任务三: 任务三:管理索引
上一页
下一页
返回首页
模块四: 模块四:索引的创建与管理
任务一: 任务一:索引的概述
1、索引的定义 、 2、索引的特点及用途 、 3、索引的类型 、
上一页
下一页
上一页
下一页
返回首页
模块四: 模块四:索引的创建与管理
2、索引的特点及用途 、
索引是SQL Server在列上建立的一种数据库对象。 在列上建立的一种数据库对象。 索引是 在列上建立的一种数据库对象 它对表中的数据提供逻辑排序, 它对表中的数据提供逻辑排序,可以提高数据的访问 速度。 速度。 例如:要查找有10000行记录的雇员表中所有来 例如:要查找有 行记录的雇员表中所有来 自北京的雇员的姓名, 自北京的雇员的姓名,如果没有在这张表中针对雇员 的地址建立索引, 的地址建立索引,则DBMS在执行操作时必须遍历表 在执行操作时必须遍历表 中每一行并只显示那些来自北京的行中的姓名字段。 中每一行并只显示那些来自北京的行中的姓名字段。 这种遍历每一行记录并完成查询的过程叫表扫描 表扫描。 这种遍历每一行记录并完成查询的过程叫表扫描。
上一页 下一页 返回首页
模块四: 模块四:索引的创建与管理
非 聚 集 索 引 的 结 构
上一页
下一页
返回首页
模块四: 模块四:索引的创建与管理
说明: 说明:
在创建非聚集索引之前, 在创建非聚集索引之前,应先了解您的数据是 如何被访问的。可考虑将非聚集索引用于: 如何被访问的。可考虑将非聚集索引用于:
上一页
下一页
返回首页
模块四: 模块四:索引的创建与管理
(3)非聚集索引 )
非聚集索引与书中的索引类似。数据存储在一个地方, 非聚集索引与书中的索引类似。数据存储在一个地方,索 引存储在另一个地方,索引有指针指向数据的存储位置。 引存储在另一个地方,索引有指针指向数据的存储位置。索引 中的项目按索引键值的顺序存储, 中的项目按索引键值的顺序存储,而表中的信息按另一种顺序 存储(这可以由聚集索引规定)。如果在表中未创建聚集索引, )。如果在表中未创建聚集索引 存储(这可以由聚集索引规定)。如果在表中未创建聚集索引, 则无法保证这些行具有特定的顺序。 则无法保证这些行具有特定的顺序。 非聚集索引与聚集索引一样有B-树结构,但是有两个重大 非聚集索引与聚集索引一样有 树结构, 树结构 区别: 区别: 1、数据行不按非聚集索引键的排序和存储; 、数据行不按非聚集索引键的排序和存储 2、非聚集索引的页层不包含数据页,相反,叶节点包含 、非聚集索引的页层不包含数据页,相反, 索引行。每个索引行包含非聚集键值或多个行定位器, 索引行。每个索引行包含非聚集键值或多个行定位器,这些行 定位器指向有该键值的数据行。(如果索引不唯一, 。(如果索引不唯一 定位器指向有该键值的数据行。(如果索引不唯一,则可能是 多行)。 多行)。
上一页
下一页
返回首页
模块四: 模块四:索引的创建与管理
聚 集 索 引 的 结 构
上一页
下一页
返回首页
模块四: 模块四:索引的创建与管理
说明: 说明:
可考虑将聚集索引用于: 可考虑将聚集索引用于:
1、包含数量有限的唯一值的列,如 state 列只包含 50 个唯一的州代码。 、包含数量有限的唯一值的列, 个唯一的州代码。 2、使用下列运算符返回一个范围值的查询:BETWEEN、>、>=、< 、使用下列运算符返回一个范围值的查询: 、 、 、 和 <=。 。 3、返回大结果集的查询。 、返回大结果集的查询。 4、经常被使用联接或 GROUP BY 子句的查询访问的列;一般来说, 、 子句的查询访问的列;一般来说, 这些是外键列。 子句中指定的列进行索引, 这些是外键列。对 ORDER BY 或 GROUP BY 子句中指定的列进行索引,可 不必对数据进行排序,因为这些行已经排序。 以使 SQL Server 不必对数据进行排序,因为这些行已经排序。这样可以提高 查询性能。 查询性能。
上一页 下一页 返回首页
模块四: 模块四:索引的创建与管理
3、索引的类型 、
可以依据索引的顺序和数据库的物理存储顺序是 否相同而将索引分为两类:聚集索引( 否相同而将索引分为两类:聚集索引(Clustered , Index)和使用的是B-树索引 树索引。 使用的是 树索引。 唯一索引( 唯一索引(Unique Index)可以确保索引列不包 ) 含重复的值。 含重复的值。 组合索引 是使用表中的不止一列对数据创建索 引的索引。 引的索引。
上一页 下一页 返回首页
模块四: 模块四:索引的创建与管理 索引提供指针以指向存储在表指定列的数据值, 索引提供指针以指向存储在表指定列的数据值,然后根据指定 的排序次序排列这些指针。 的排序次序排列这些指针。 索引有如下优点: 索引有如下优点: 1、提高查询速度 、 2、提高连接、Order by 和Group by执行的速度 、提高连接、 执行的速度 3、查询优化器依靠索引起作用 、 4、强制实施行的唯一性 、 注: 索引可以为性能带来好处,但是是有代价的, 索引可以为性能带来好处,但是是有代价的,带索引的表在数 据库中会占据更多的空间。另外,为了维护索引,对数据进行插入、 据库中会占据更多的空间。另外,为了维护索引,对数据进行插入、 更新、删除操作的命令所花费的时间会更长。在设计和创建索引时, 更新、删除操作的命令所花费的时间会更长。在设计和创建索引时, 应确保对性能的提高程度大于在存储空间和处理资源方面的代价。 应确保对性能的提高程度大于在存储空间和处理资源方面的代价。
聚集索引不适用于频繁更改的列
在创建了聚集索引列上更改数据将导致整行移动( 在创建了聚集索引列上更改数据将导致整行移动(因为 SQL Server 必 须按物理顺序保留行中的数据值)。这一点要特别注意, )。这一点要特别注意 须按物理顺序保留行中的数据值)。这一点要特别注意,因为在大数据量事 务处理系统中数据是易失的。 务处理系统中数据是易失的。
返回首页
模块四: 模块四:索引的创建与管理
1、索引的定义 、
索引是与表或视图相关联的结构, 索引是与表或视图相关联的结构,可加快 从表或视图中检索行的速度。 从表或视图中检索行的速度。 索引包含由表或视图中的一列或多列生成 的键。这些键存储在一个结构内, 的键。这些键存储在一个结构内,使 SQL Server 得以快速有效地找到与键值相关联的一 行或多行。 行或多行。
上一页
下一页
返回首页
模块四: 模块四:索引的创建与管理
(2)聚集索引 ) 聚集索引和非聚集索引都是使用B-树的结构来建 聚集索引和非聚集索引都是使用 树的结构来建 立的,而且都包含索引页和数据页, 立的,而且都包含索引页和数据页,其中索引页用来 存放索引和指到下一层的指针,数据页用来存放记录。 存放索引和指到下一层的指针,数据页用来存放记录。 聚集索引保证数据库表中记录的物理顺序与索引 顺序相同,而在非聚集索引中, 顺序相同,而在非聚集索引中,数据库表中记录的物 理顺序与索引顺序可以不相同。 理顺序与索引顺序可以不相同。 一个表中只能有一个聚集索引, 一个表中只能有一个聚集索引,而表中的每一列 上都可以有自已的非聚集索引。 上都可以有自已的非聚集索引。
上一页 下一页 返回首页
模块四: 模块四:索引的创建与管理
(4)惟一索引和组合索引 )
创建唯一索引可以确保任何生成重复键值的尝试都会失败。 创建唯一索引可以确保任何生成重复键值的尝试都会失败。 如果创建的单个查询导致添加了重复的和非重复的键值,SQL 如果创建的单个查询导致添加了重复的和非重复的键值, Server 会拒绝所有的行,包括非重复的键值。例如,如果一个单 会拒绝所有的行,包括非重复的键值。例如, 个的插入语句从表 A 检索了 20 行,然后将它们插入到表 B 中, 行包含重复键值, 而这些行中有 10 行包含重复键值,则默认情况下所有 20 行都将 被拒绝。不过,在创建该索引时可以指定IGNORE_DUP_KEY 子 被拒绝。不过,在创建该索引时可以指定 使得只有重复的键值才被拒绝,而非重复的键值将被添加。 句,使得只有重复的键值才被拒绝,而非重复的键值将被添加。 在上面的例子中, 个重复的键值, 在上面的例子中,将只会拒绝 10 个重复的键值,其它 10 个非重 复的键值将被添加到表 B 中。 组合索引就是利用表中的多列创建索引。 组合索引就是利用表中的多列创建索引。
相关文档
最新文档