索引类型1. 唯一索引:唯一索引不允许两行具有相同的索引值2. 主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的,并且不能为空3. 聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每...
分类:
数据库 时间:
2015-06-15 00:03:01
阅读次数:
197
堆(Heap)之所以这个结构称为堆,是因为它不以任何人为指定的逻辑顺序进行排列。而是按照分区组队数据进行组织。也就是说,是按照磁盘的物理顺序。只要需要读取的数据文件没有文件系统碎片(注意和下面提到的索引的碎片区分),这个读取过程在磁盘中就可以连续的进行,没有多余的磁盘臂移动。而磁盘臂移动是I/O操作...
分类:
数据库 时间:
2015-06-14 19:48:35
阅读次数:
142
在上一篇文章里,我谈了唯一聚集索引上的唯一和非唯一非聚集索引的区别。在这篇文章里,我想谈下非唯一聚集索引上的唯一和非唯一聚集索引的区别。我们都知道,SQL Server内部把非唯一聚集索引当作唯一聚集索引处理的。如果你定义了一个非唯一聚集索引,SQL Server会增加叫做uniquifier到你的...
分类:
其他好文 时间:
2015-06-13 17:09:12
阅读次数:
106
什么是索引 数据库索引是对表的一列或多列的值进行排序的一种结构,索引与表数据的关系类似于目录与书籍内容的关系。在SQL-Server中存在两种比较重要的索引,分别为聚集索引与非聚集索引,它们是以B+树组织保存的。 为什么要使用索引 数据查询是数据库一项使用非常频繁的操作,查询的快慢已成为了衡量系统好...
分类:
数据库 时间:
2015-06-12 20:40:01
阅读次数:
132
在上一篇文章里,我们讨论了堆表上唯一/非唯一非聚集索引。在SQL Server里没有聚集索引定义的叫堆表。当你在堆表上定义了一个聚集索引,你的表数据就会重组按聚集键的顺序进行物理存储,因为这个表叫做聚集表。这篇文章里,我想谈下唯一和非唯一聚集索引之间的区别,这2类聚集索引对存储的影响。看这个文章之前...
分类:
其他好文 时间:
2015-06-09 11:18:07
阅读次数:
144
在这篇文章里,我想详细介绍下SQL Server里唯一与非唯一非聚集索引的区别。看这个文章前,希望你已经理解了聚集和非聚集索引的概念,还有在SQL Server里是如何使用的。很多人对唯一和非唯一索引非聚集索引的认识都不是很清晰。事实上,SQL Server在存储上这2类索引有着本质的区别,这些区别...
分类:
其他好文 时间:
2015-06-08 16:53:25
阅读次数:
221
1、聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个2、聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续3、聚集索引树的叶节点存放的是数据页信息,非聚集索引的叶节点存放非聚集索引的键值,并且每个键值都有指针指向包含该键值的数据航。4、如果在一个表中要创建聚集索引...
分类:
其他好文 时间:
2015-06-06 21:54:23
阅读次数:
105
一、深入浅出理解索引结构
实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别:
其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,...
分类:
其他好文 时间:
2015-06-04 21:09:57
阅读次数:
195
当我们进行SQL Server问题处理的时候,有时候会发现一个很有意思的现象:SQL Server完全忽略现有定义好的非聚集索引,直接使用表扫描来获取数据。我们来看看下面的表和索引定义: 1 CREATE TABLE Customers 2 ( 3 CustomerID INT NOT NUL...
分类:
数据库 时间:
2015-06-02 19:34:20
阅读次数:
230
在SQL Server中,非聚集索引其实可以看做是一个含有聚集索引的表,但相对实际的表来说,非聚集索引中所存储的表的列数要少得多,一般就是索引列,聚集键(或RID)。非聚集索引仅仅包含源表中的非聚集索引的列和指向实际物理表的指针。一、非聚集索引之INCLUDE 非聚集索引其实可以看做一个含有聚集.....
分类:
数据库 时间:
2015-05-31 13:51:03
阅读次数:
239