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"列功能,该功能消除了这种差异。
看这里。
回答
对于第一个项目符号:
是的,至少在使用不推荐使用的BLOBimage
,text
或者ntext
以及使用SQL Server <= 2005的情况下,列顺序确实很重要。
在这种情况下,我们应该将这些列放在表的"末尾",并且每次检索时都会对性能造成影响。
如果我们使用DAL从此类表中检索数据,那么这是延迟加载模式的理想之地。