非聚集索引的作用是什么??? 今天在网上看到一篇关于数据库索引的文章,在里面,他谈到了sql server的两种索引。一种是聚集索引,一种是非聚集索引,但是,在文章里面,我只是看到了,用聚集索引的优点等等。请问,那非聚集索引一般在什么情况下使用呢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参考一下:SQL Server 的聚簇索引与非聚簇索引聚集索引:表中存储的数据按照索引的顺序存储,检索效率比普通索引高,但对数据新增/修改/删除的影响比较大。 非聚集索引:不影响表中的数据存储顺序,检索效率比聚集索引低,对数据新增/修改/删除的影响很小。 一张表只有一个聚簇索引,可有多个非聚簇索引。 下表描述聚簇索引与非聚簇索引的适用范围: 动作描述 使用聚集索引 使用非聚集索引 列经常被分组排序 应 应 返回某范围内的数据 应 不应 返回精确匹配的数据 不应 应 一个或极少不同值 不应 不应 小数目的不同值 应 不应 大数目的不同值 不应 应 频繁更新的列 不应 应 外键列 应 应 主键列 应 应 注:主键列如果是采用标识且经常用于范围查询,则适用聚簇索引,否则适用非聚簇索引。 嗬嗬,我看的正是大家贴出来的那篇文章。我是看到下面这个例子时,想到的我提出来的问题的。在这里对fariqi字段建立非聚集索引和不建立,查询时间是相差无几的。所以4楼说的奇效,是在什么时候呢。能具体地说个例子吗?文章引用:在这里之所以提到“理论上”三字,是因为如果您的聚集索引还是盲目地建在ID这个主键上时,您的查询速度是没有这么高的,即使您在“日期”这个字段上建立的索引(非聚合索引)。下面我们就来看一下在1000万条数据量的情况下各种查询的速度表现(3个月内的数据为25万条): (1)仅在主键上建立聚集索引,并且不划分时间段: Select gid,fariqi,neibuyonghu,title from tgongwen 用时:128470毫秒(即:128秒) (2)在主键上建立聚集索引,在fariq上建立非聚集索引: select gid,fariqi,neibuyonghu,title from Tgongwen where fariqi> dateadd(day,-90,getdate()) 用时:53763毫秒(54秒) (3)将聚合索引建立在日期列(fariqi)上: select gid,fariqi,neibuyonghu,title from Tgongwen where fariqi> dateadd(day,-90,getdate()) 用时:2423毫秒(2秒) 面试HP 数据仓库职位归来,分享面试题目·· 不显示删除回复显示所有回复显示星级回复显示得分回复 a表中的值赋给b表的语句怎么写 请问如何在SQL SERVER中统一去掉某字段的最后几个字符 Excel 交叉表 怎么建数据表存储!?又怎么从表里面拿出来成原样!? 两个表列名相同,如何把它变成一张表? 菜鸟求教 把值12345插入到money型字段中,怎么转换??? 初级问题:object_id(N'[dbo].[TableName]')中,N''是何意思? SqlServer加密 统计迟到合计??? 问个全文检索速度的问题 求一个3表的联合查询语句,哦不,是2表联合查询
SQL Server 的聚簇索引与非聚簇索引
聚集索引:表中存储的数据按照索引的顺序存储,检索效率比普通索引高,但对数据新增/修改/删除的影响比较大。
非聚集索引:不影响表中的数据存储顺序,检索效率比聚集索引低,对数据新增/修改/删除的影响很小。
一张表只有一个聚簇索引,可有多个非聚簇索引。
下表描述聚簇索引与非聚簇索引的适用范围: 动作描述 使用聚集索引 使用非聚集索引
列经常被分组排序 应 应
返回某范围内的数据 应 不应
返回精确匹配的数据 不应 应
一个或极少不同值 不应 不应
小数目的不同值 应 不应
大数目的不同值 不应 应
频繁更新的列 不应 应
外键列 应 应
主键列 应 应 注:主键列如果是采用标识且经常用于范围查询,则适用聚簇索引,否则适用非聚簇索引。
我是看到下面这个例子时,想到的我提出来的问题的。
在这里对fariqi字段建立非聚集索引和不建立,
查询时间是相差无几的。
所以4楼说的奇效,是在什么时候呢。能具体地说个例子吗?文章引用:
在这里之所以提到“理论上”三字,是因为如果您的聚集索引还是盲目地建在ID这个主键上时,您的查询速度是没有这么高的,即使您在“日期”这个字段上建立的索引(非聚合索引)。下面我们就来看一下在1000万条数据量的情况下各种查询的速度表现(3个月内的数据为25万条): (1)仅在主键上建立聚集索引,并且不划分时间段: Select gid,fariqi,neibuyonghu,title from tgongwen 用时:128470毫秒(即:128秒) (2)在主键上建立聚集索引,在fariq上建立非聚集索引: select gid,fariqi,neibuyonghu,title from Tgongwen where fariqi> dateadd(day,-90,getdate()) 用时:53763毫秒(54秒) (3)将聚合索引建立在日期列(fariqi)上: select gid,fariqi,neibuyonghu,title from Tgongwen where fariqi> dateadd(day,-90,getdate()) 用时:2423毫秒(2秒)