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