聚集索引与非聚集索引的区别:聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。聚集索引的叶节点就是最终的数据节点,而非聚集索引的叶节仍然是索引节点,但它有一个指向最终数据的指针。使用聚集索引来做查询操作时速度很快,但是做插入操作时就较为费时。 InnoDB支持聚集索引,MyISAM不...
分类:
其他好文 时间:
2015-06-18 23:56:09
阅读次数:
234
在数据库中B+树的高度一般都在2~3层,也就是对于查找某一键值的行记录,最多只需要2到3次的IO。
InnoDB存储引擎表是索引组织表,即表中数据按照主键顺序存放。而聚集索引就是按照每张表的主键构造一颗B+树,并且叶子节点存放整张表的行记录数据,因此也让聚集索引的叶子节点成为数据页。聚集索引的这个特性决定了索引组织表中数据也是索引的一部分。同B+树结构一样,每个数据页都是通过一个双向链表来进行链接。...
分类:
其他好文 时间:
2015-06-17 00:42:53
阅读次数:
145
1,sp_estimate_data_compression_savings返回所请求对象的当前大小并估算对象在所请求的压缩状态下的大小,可对所有表或分区表评估压缩。 这包括堆、聚集索引、非聚集索引、索引视图以及表和索引分区。 可使用行压缩或页压缩来压缩这些对象。如果表、索引或分区已经过压缩,则可使...
分类:
数据库 时间:
2015-06-15 18:09:16
阅读次数:
206
原文:SQL Server如何在变长列上存储索引这篇文章我想谈下SQL Server如何在变长列上存储索引。首先我们创建一个包含变长列的表,在上面定义主键,即在上面定义了聚集索引,然后往里面插入80000条记录: 1 -- Create a new table 2 CREATE TABLE Cust...
分类:
数据库 时间:
2015-06-15 13:01:56
阅读次数:
150
这篇文章我想谈下SQL Server如何在变长列上存储索引。首先我们创建一个包含变长列的表,在上面定义主键,即在上面定义了聚集索引,然后往里面插入80000条记录: 1 -- Create a new table 2 CREATE TABLE Customers 3 ( 4 Customer...
分类:
数据库 时间:
2015-06-15 13:01:38
阅读次数:
153
原文:索引键的唯一性(4/4):非唯一聚集索引上的唯一和非唯一非聚集索引在上一篇文章里,我谈了唯一聚集索引上的唯一和非唯一非聚集索引的区别。在这篇文章里,我想谈下非唯一聚集索引上的唯一和非唯一聚集索引的区别。我们都知道,SQL Server内部把非唯一聚集索引当作唯一聚集索引处理的。如果你定义了一个...
分类:
其他好文 时间:
2015-06-15 12:41:48
阅读次数:
197
索引类型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