SQL Server列设计

SQL Server列设计,sql,sql-server,Sql,Sql Server,我总是尽量使我的sql数据库简单易懂。 直到现在,我总是使用有限数量的列,我想我从来没有超过20列。现在,有一件事,如果我有更多的专栏,我的生活会更轻松。比如说200列。(不是行)。你觉得怎么样 我只是想知道,这是不是一个坏主意,不是我为什么要这样做,或者是否有其他的可能性,只是有人已经经历过类似的事情,而且做这样一张桌子是不是一个坏主意。我不认为这是黑白的。行大(意味着列的数量多)会影响性能(即,更多的i/O)——但在某些情况下,一个地方的性能稍有提高会被其他地方的性能提高所抵消 我想说,这取

我总是尽量使我的sql数据库简单易懂。 直到现在,我总是使用有限数量的列,我想我从来没有超过20列。现在,有一件事,如果我有更多的专栏,我的生活会更轻松。比如说200列。(不是行)。你觉得怎么样


我只是想知道,这是不是一个坏主意,不是我为什么要这样做,或者是否有其他的可能性,只是有人已经经历过类似的事情,而且做这样一张桌子是不是一个坏主意。

我不认为这是黑白的。行大(意味着列的数量多)会影响性能(即,更多的i/O)——但在某些情况下,一个地方的性能稍有提高会被其他地方的性能提高所抵消


我想说,这取决于您希望这个表有多少行,查询它的频率,这些额外的列中有多少真正被访问,以及它在效率和复杂性方面与您的替代设计相比如何

我不认为它是黑白的。行大(意味着列的数量多)会影响性能(即,更多的i/O)——但在某些情况下,一个地方的性能稍有提高会被其他地方的性能提高所抵消

我想说,这取决于您希望这个表有多少行,查询它的频率,这些额外的列中有多少真正被访问,以及它在效率和复杂性方面与您的替代设计相比如何

卢克--

这实际上取决于您使用的系统类型。例如,在事务系统中,大多数表最多有50列左右,几乎没有冗余的数据属性(如果有流程日期,则不需要将流程月份或流程年份作为单独的列)。这当然是因为记录经常更新/插入,每次更新一行时都需要更新所有冗余属性

在数据仓库/报告环境中,对于维度表(具有实体属性)通常会有100多个列,因为您可能希望以各种方式对给定实体进行分类。此处的更新不是什么问题,因为数据通常在非高峰时间加载一次,然后主要用于选择

请查看这些链接以了解更多信息

所以答案是这取决于。。。如果您想要一个完美的关系系统,那么可能是200多个列是一个红色的标志,表明您应该考虑规范化数据(可能不是)。在这样的系统中,更新和索引是您应该关注的两件事。

--

这实际上取决于您使用的系统类型。例如,在事务系统中,大多数表最多有50列左右,几乎没有冗余的数据属性(如果有流程日期,则不需要将流程月份或流程年份作为单独的列)。这当然是因为记录经常更新/插入,每次更新一行时都需要更新所有冗余属性

在数据仓库/报告环境中,对于维度表(具有实体属性)通常会有100多个列,因为您可能希望以各种方式对给定实体进行分类。此处的更新不是什么问题,因为数据通常在非高峰时间加载一次,然后主要用于选择

请查看这些链接以了解更多信息


所以答案是这取决于。。。如果您想要一个完美的关系系统,那么可能是200多个列是一个红色的标志,表明您应该考虑规范化数据(可能不是)。在这样的系统中,更新和索引是您应该关注的两件事。

更少、更小宽度的列比很多列和/或大宽度的列要好

为什么??因为行大小越窄,在8K页面上可以容纳的行就越多。这意味着您可以减少I/O,并使用更少的内存来缓冲页面。这总是一件好事


在(希望)罕见的情况下,域需要一个对象上的许多属性(假设1-1对象表映射),你应该考虑分成1-1关系的两个表,一个包含频繁使用的列。

少,较小宽度的列优于大量列和/或较大宽度的列

为什么??因为行大小越窄,在8K页面上可以容纳的行就越多。这意味着您可以减少I/O,并使用更少的内存来缓冲页面。这总是一件好事


在(希望)罕见的情况下,域需要一个对象上的许多属性(假设1-1对象表映射),您应该考虑分成1-1关系的两个表,一个包含频繁使用的列。

您使用的是SQLServer,默认为行导向存储。(一行中的所有字段一起存储在一个页面中),这可能是大量列的问题。但是,如果使用面向列的存储,则每个表的列数并不重要,因为每个列都存储在一起。我不知道SQL Server是否可以做到这一点。

您使用的是SQL Server,我认为默认为面向行的存储(一行中的所有字段一起存储在一个页面中),这可能是大量列的问题。但是,如果使用面向列的存储,则每个表的列数并不重要,因为每个列都存储在一起。我不知道SQL Server是否可以做到这一点。

能否提供更多的上下文,说明为什么需要这么多列?如果有30多个列,则与“你可能做错了,或者你选择了一个糟糕的遗留项目来工作。@卢克-我们需要上下文来给出任何形式的o