SQL Server:索引小于 8kb 的表是否有任何性能优势?

BI *_*key 6 index sql-server database-internals

如果一个表在 SQL Server 中的大小小于 8kb,那么大概它都存储在一个页面上。因此 - 除了强制执行唯一约束之外 - 是否可以通过应用索引获得任何性能优势?

我的假设是,为了读取这样的表,SQL Server 必须将存储它的单页读取到内存中。因此,从性能的角度来看,<8kb 表上的任何索引都是毫无意义的,因为任何索引都会占用额外的页面,然后您必须读取两页(除非索引包含所需的列)才能获取数据。

因此,除非索引中有一些东西可以以我不理解的方式改进数据处理,或者它有助于查询优化器,否则我的假设是索引这样一个小表是没有意义的。

非常感谢您的专家意见!

(这是一个纯粹的理论问题,以帮助我确保正确理解一些数据库概念......谢谢!)

Mar*_*ith 7

是的。

一个潜在的好处是槽数组按索引键顺序排序,因此可以通过执行二分搜索(或有时是线性插值)而不是读取页面上的所有行来找到页面上的匹配行。

SQL Server、Seeks 和 Binary Search包含更多关于此的详细信息。