文档详情

数据库索引意义.pdf

发布:2025-04-22约9.67千字共10页下载文档
文本预览下载声明

一、SqlServer索引原理

在SQLServer中,索引是一种增强式的存在,这意味着,即使没有索引,SQL

Server仍然可以实现应有的功能。

但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解

索引的概念,需要了解大量原理性的知识,包括B树,堆,数据库页,区,填充因

子,碎片,文件组等等一系列相关知识。

简单地说索引类似于一本书的目录,在一本书中使用目录可以快速找到你想要的

信息,而不需要读完全书。

索引在数据库中也起到类似的作用,可以帮助数据库快速定位到存储在表中的数

据。通过使用索引,可以减少查询时需要扫描的数据量,从而提高查询效率。

索引分为:唯一索引、主键索引、聚集索引和非聚集索引。

(1)唯一索引:唯一索引不允许两行具有相同的索引值。

如果现有数据中存在重复的键值,则一般情况下大多数数据库都不允许创建唯一

索引.

因为当新数据将使表中的键值重复时,数据库会拒绝接受此数据。

(2)主键索引:在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引

是唯一索引的特殊类型。

主键索引要求主键中的每个值是唯一的,当在查询中使用主键索引时,它还允许

快速访问数据。

(3)聚集索引:在聚集索引中,表中各行的物理顺序与键值的逻辑(索引)顺序相同,

表只能包含一一个聚集索引。例如:汉语字典默认按拼音排序编排字典中的每页页码。

拼音字母a,b,c,d…,x,y,Z就是索引的逻辑顺序,而页码1,2,3…就是物理顺序。

默认按拼音排序的字典,其索引顺序和逻辑顺序是一致的。即拼音顺序较后的字对

应的页码也较大。如拼音“ha”对应的字(词)页码就比拼音“ba对应的字(词)页码靠后。

(orderby按聚集索引列排序效率最高)

(4)非聚集索引:与聚类索引相反,该索引中索引的逻辑顺序与磁盘上行的物理存储

顺序不同,一个表中可以拥有多个非聚集索引。

按照定义,除了聚集索引以外的索引都是非聚集索引

二、主键和索引

我们在使用SQLServer数据库的时候常常会创建主键和索引,那么主键和索引到

底有什么样的不同呢?本文我们主要介绍了主键和索引的区别。

主键和索引的区别如下:

主键是索引,但索引不一定是主键。

主键具有唯一性,而只有唯一性索引才具有唯一性;主键的值不能为空,不能重

复。索引可以在程序中动态创建删除。也可以是任何有序的字段。

三、索引创建和使用

我一般使用Navicat工具对数据库进行管理,不过学习好语句也有好处

XML索引:对xml数据类型列创建XML索引。它们对列中XML实例的所有

标记、值和路径进行索引,从而提高查询性能。

Spatial索引:“空间索引”是一种扩展索引,允许您对空间列编制索引。空间列是

包含空间数据类型(如geometry或geography)的数据的表列。

索引创建语句:

普通索引

CREATENONCLUSTEREDINDEX索引名ON表名(列名)

聚类索引

CREATECLUSTEREDINDEX索引名ON表名(列名)

也可以通过重构索引提升查询速度:

ALTERINDEX索引名ON表名REBUILD

删除不必要的索引

DROPINDEX索引名on表名

四、索引失效

所谓失效。并不真的就是这个索引被删除了。而是在这些情况下,DBMS不会检

索索引列表了。执行速度和没有这个索引时的速度一样。

但是再执行另外的一条语句。同样索引可以正常起作用。所以索引的失效是针对

某条sql语句的,而不是针对索引本身的。

也就是说如果不是直接判断索引字段列,而是判断运算或其它函数处理后的索引

列。

1.索引字段进行判空查询时。也就是对索引字段判断是否为NULL时。语句为is

null或isnotnull。

比如:select*fromtempwheretimeisnull此时就不检索time字段上的索引表了。也

就是索引在这条语句执行时失效了。接着再执

行select*fromtempwheretim

显示全部
相似文档