gpt4 book ai didi

sql-server - 订购 SQL Server 列时对性能/空间的影响?

转载 作者:行者123 更新时间:2023-12-04 14:42:17 25 4
gpt4 key购买 nike

在设计新表时,是否应该考虑有关列声明顺序的任何注意事项?我倾向于将主键放在第一位,然后是任何外键(通常是代理键整数),然后是其他列,但是与同事的讨论让我们想知道 SQL Server 是否会填充我们的数据,可能会使其更快。

出于性能原因(C++ 编译器在默认条件下对齐结构的方式),SQL Server 会尝试将磁盘上的数据(使用填充)对齐到特定的字节对齐边界,还是会分配与我们的一样多的字节总行需要(可能在行级别填充)? IE。如果我们有一个 3 字节的 char 列和另一个 bit/tinyint 类型的列,我们是否可以通过使其中一个跟随另一个以 4 字节边界对齐来期望服务器的行为发生任何变化(更好或更坏)? SQL Server 是否关心我声明列的顺序,或者它是否可以按照它认为合适的方式自由布置它们?

我知道在尝试优化我的表列的布局之前,我应该首先查看一百万件事,但出于好奇,我很想知道 SQL Server 是否关心列顺序,以及是否所以,人们会去哪里(DMV 等??)看看它是如何将行物理地放置在磁盘上的。

最佳答案

SQL Server 以固定的方式将数据存储在磁盘上。

sys.columns 和键列中的顺序与此磁盘顺序无关

参见 "Anatomy of a record" (Paul Randal)和我在这里的回答:How do you get to limits of 8060 bytes per row and 8000 per (varchar, nvarchar) value?

关于sql-server - 订购 SQL Server 列时对性能/空间的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6692021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com