SQL Server-列顺序重要吗?

时间:2020-03-05 18:45:06  来源:igfitidea点击:

在性能和优化方面:

  • 在SQL Server中构造表时,我按什么顺序放置列是否重要?
  • 我的主键是否在第一列有关系吗?
  • 构造多字段索引时,列是否相邻是否重要?

解决方案

回答

我会说所有这些问题的答案都是"否",尽管我在MS-SQL方面的经验可以追溯到SQL2000。在SQL2005中可能会有所不同

回答

前3个为否,因为索引将保存数据,后3个也不为最后一个

回答

对于第四个项目符号:否,我们无法指定要添加列的位置。这是ALTER TABLE的语法:https://msdn.microsoft.com/zh-cn/library/ms190273.aspx

在MySQL中,它们提供了ALTER TABLE ADD ... AFTER ...之后的功能,但这在T-SQL中没有出现。

如果要对列进行重新排序,则必须重新构建表。

编辑:对于最后一个要点,我们将不得不删除表并重新创建表以对列进行重新排序。一些操作SQL数据库的图形工具将为我们完成此操作,并使我们看起来好像在对列进行重新排序,因此我们可能需要调查一下。

回答

在SQL Server 2005中,可为空的可变长度列的放置对空间有影响,在定义的末尾放置可为空的可变大小列可减少空间消耗。

SQL Server 2008添加了" SPARSE"列功能,该功能消除了这种差异。

看这里。

回答

对于第一个项目符号:

是的,至少在使用不推荐使用的BLOBimagetext或者ntext以及使用SQL Server <= 2005的情况下,列顺序确实很重要。

在这种情况下,我们应该将这些列放在表的"末尾",并且每次检索时都会对性能造成影响。

如果我们使用DAL从此类表中检索数据,那么这是延迟加载模式的理想之地。