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

前端之家收集整理的这篇文章主要介绍了聚集索引与非聚集索引哪个更快一些?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

  文章作者给出的答案是:

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

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

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

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

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

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

猜你在找的MsSQL相关文章