当对 SQL Server 列进行排序时,性能 / 空间影响是什么?

4
设计新表时,在声明列的顺序方面应该考虑哪些因素?我倾向于首先放置主键,其次是任何外键(通常是替代键整数),然后是其他列,但与同事的讨论使我们想知道SQL Server是否会填充我们的数据,可能是为了使其更快。
SQL Server是否会尝试对齐我们在磁盘上的数据(使用填充),以便出于性能原因将其对齐到特定的字节对齐边界(类似于C ++编译器在默认条件下对齐结构体)或者仅根据行所需的总字节数分配(可能在行级别进行填充)?也就是说,如果我们有一个3字节的char列和另一个bit / tinyint类型的列,通过使其中一个遵循另一个以在4字节边界上对齐,我们可以期望服务器的行为有所改变(更好或更差)吗? SQL Server是否关心我声明列的顺序,还是可以自由布局?
我知道在尝试优化表列的布局之前,可能有无数个需要考虑的事情,但是出于好奇心,我想知道SQL Server是否关心列顺序,如果是这样,应该去哪里(DMV等?)查看它如何在磁盘上物理排列行。

可能是重复问题 - https://dev59.com/R3VD5IYBdhLWcg3wRpaX - CResults
1个回答

4

您好,sys.columns中的顺序并不重要,因为它只显示逻辑层,并且不显示表物理结构中的实际列。 列的顺序可以显着影响性能。此外,它甚至可能影响错误!(http://ariely.info/Blog/tabid/83/EntryId/219/SQL-Server-internals-Is-Order-of-Column-in-the-table-important.aspx) - Ronen Ariely

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接