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

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

       文章作者给出的答案是:

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

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

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

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

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

相关文章:

  • 2021-07-05
  • 2021-07-26
  • 2021-08-17
猜你喜欢
  • 2021-08-07
  • 2021-06-01
  • 2021-06-25
相关资源
相似解决方案