mysql – 列排序会影响Microsoft SQL Server 2012中的性能吗?

我已经读过varchar字段应该作为一个列放在数据库表的末尾 – 至少在MySQL中.原因是因为varchar字段具有可变长度,并且可能会减慢查询速度.
我的问题:这是否适用于MSSQL 2012?
我应该设计我的表,以便在每个数据库行的末尾都包含每个文本数据吗?
最佳答案
与数据库设计(实体,属性和关系),事务设计和查询设计的性能影响相比,表中列的顺序对性能的影响非常小.

要判断差异是否可以忽略不计,您确实需要设置一些测试,并比较结果.

通常,我将主键作为第一列,然后是外键,然后是自然键和频繁访问的列.我通常将较长的字符串放在行的末尾.但这并不一定是性能优化,而是为了方便我使用的风格偏好.

当一行中的大量列可为空且大多数列包含NULL时,列的顺序可能会影响SQL Server中行的大小. SQL Server(如Oracle)具有优化功能,其中没有为在行的末尾包含NULL值的列保留空间.为行中的每个列保留一些空间,直到行中的最后一个非NULL值.

从中可以看出,如果你有很多可以为空的列,你需要在最常见的NULL之前的列中最常不为NULL的列.

注意:请记住,SQL Server首先根据列是固定长度还是可变长度来对表中的列进行排序.首先存储所有固定长度列,然后存储所有可变长度列.在这些列集(固定和变量)中,列按其定义的顺序存储.

转载注明原文:mysql – 列排序会影响Microsoft SQL Server 2012中的性能吗? - 代码日志