国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 数据库 > Sqlserver > 聚集索引与非聚集索引哪个更快一些?

聚集索引与非聚集索引哪个更快一些?

来源:程序员人生   发布时间:2014-04-26 22:36:31 阅读次数:2933次

  大概数周之前,因为公司招人,想在网上找点面试题“借用借用”,于是无意中找到这样一道数据库题:

  “索引有那两种形式?分别有什么优缺点?”

  文章作者给出的答案是:

  “聚集索引:表中存储的数据按照索引的顺序存储,检索效率比非聚集索引高,但对数据更新影响较大。

  非聚集索引:不影响表中数据的存储顺序,检索效率比聚集索引低,但对数据更新影响较小。”

  非聚集索引真的比聚集索引慢吗?就本人对数据库的理解,并不是这样的。

  以SQL SERVER为例,数据记录是分布在以8KB为单位的数据页上的。聚集索引就是数据本身,而非聚集索引保存的是索引键和对应的聚集索引键值。

  因此绝大多数情况,一单位聚集索引的大小都大于一单位非聚集索引的大小,换句话说,一个数据页上能够容纳非聚集索引的条数是多余聚集索引的。

  而SQL SERVER是以页为单位来扫描数据的,因此扫描相同页数量的数据页,能够覆盖的非聚集索引数量会更多,如果合理的利用SQL SERVER 2005的包含列的话,非聚集索引的查询效率是高于聚集索引的。

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生