关于性能:SQL Server-列顺序重要吗?

关于性能:SQL Server-列顺序重要吗?

SQL Server - Does column order matter?

在性能和优化方面:

  • 在SQL Server中构造表时,我按什么顺序放置列是否重要?
  • 我的主键是否在第一列有关系吗?
  • 构造多字段索引时,列是否相邻是否重要?
  • 使用ALTER TABLE语法,是否可以指定要添加列的位置?

    • 如果没有,如何将列移动到其他位置?

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

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

看这里。


对于第四个项目符号:否,您无法指定要在何处添加该列。这是ALTER TABLE的语法:https://msdn.microsoft.com/en-us/library/ms190273.aspx

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

如果要重新排序列,则必须重建表。

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


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


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


创建表时列顺序无关紧要。我们可以在从数据库中检索数据时排列列。主键可以设置为任何列或列的组合。


对于第一个项目符号:

是的,至少在使用不推荐使用的BLOB imagetextntext并使用SQL Server <= 2005的情况下,列顺序确实很重要。

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

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


推荐阅读

    linux使用索引命令?

    linux使用索引命令?,名称,系统,命令,文件,环境,工作,位置,目录,文件名,索引,

    linux光标位置命令?

    linux光标位置命令?,位置,光标,时间,系统,状态,终端,命令,程序,文件,菜单,lin

    linux性能测试命令?

    linux性能测试命令?,数据,系统,工具,标准,设备,地址,情况,基础,网络,环境,如

    linux刷新索引的命令?

    linux刷新索引的命令?,系统,工作,工具,管理,软件,设计,状态,基础,命令,预期,

    linux命令文件换位置?

    linux命令文件换位置?,位置,财务,系统,公司,名称,目录,文件,命令,一致,工作,l

    linux命令3d性能?

    linux命令3d性能?,系统,工具,实时,百分比,信息,分析,软件,情况,网站,建设,Lin

    linux命令参数位置?

    linux命令参数位置?,工作,系统,命令,信息,标准,状态,位置,地址,文件,简介,lin

    linux性能管理命令?

    linux性能管理命令?,工具,系统,信息,状态,网络,情况,工作,时间,短信,平均,lin

    linux性能调参命令?

    linux性能调参命令?,工具,工作,信息,网络,分析,系统,地址,实时,管理,状态,在l

    linux性能找不打命令?

    linux性能找不打命令?,系统,实时,软件,名字,分析,信息,情况,工具,电脑,时间,l

    linuxsu命令位置?

    linuxsu命令位置?,系统,地址,环境,管理,位置,工作,命令,密码,信息,用户,linux

    如何优化 Python

    如何优化 Python,代码,项目,情况,在线,技术,电脑,大规模,合法,策略,培训,我

    Python 性能剖分工具

    Python 性能剖分工具,时间,工具,环境,分析,数据,代码,标准,人员,项目,培训,

    Python性能分析

    Python性能分析,代码,分析,对比,时间,工具,标准,注释,跨行,通用,报告,python