Aar*_*her 9 sql-server sql-server-2005
我有一个请求允许动态表有1000列(由我的最终用户随机选择).这对我来说似乎是一个坏主意.它是一个可自定义的表,因此它将具有列varchar(200)
和float
列的混合(float最适合应用程序c ++ double类型).此数据库主要是遗留应用程序的索引,并充当报告存储库.这不是记录系统.该应用程序有数千个数据点,其中很少有可以标准化.
关于它的性能影响的任何想法?还是一个理想的表格大小来分解它呢?
由于我不知道20k值的选择中的哪些字段,最终用户将选择规范化表是不可行的.我可以将这些数据分成几个表,我必须动态管理(可以添加或下载字段.然后删除行,并重新解析记录系统以填充表.)我的偏好是推回和规范化所有20k位数据.但我没有看到这种情况发生.
Chr*_*ava 15
这对我来说闻起来很糟糕.
需要考虑的事项:
这些列中的大多数都包含NULL值吗?
许多人会被命名为Property001,Property002,Property003等......?
如果是这样,我建议您重新考虑数据规范化.
dev*_*vio 14
来自SQL2005文档:
SQL Server 2005每个数据库最多可包含20亿个表,每个表最多可包含1,024个列.(...)每行的最大字节数为8,060.对于具有varchar,nvarchar,varbinary或sql_variant列的表,放宽了此限制,这些列导致总定义的表宽度超过8,060字节.这些列中每一列的长度仍必须在8,000字节的限制范围内,但它们的组合宽度可能超过表中的8,060字节限制.
这些列的功能是什么?为什么不把它们分成主表,属性(查找表)和值?
每当您觉得需要询问系统有什么限制时,您就会遇到设计问题.
如果你问"我可以在varchar中放入多少个字符?" 那么你根本不应该使用varchars.
如果您真的想知道1000列是否合适,那么您迫切需要重新组织数据.(正常化)
MS SQL Server每个表的限制为1024列,因此您将在此边缘运行.使用varchar(200)列,您将能够超过每行8k字节的限制,因为SQL将在数据页上存储8k,然后溢出页面外的数据.
SQL 2008为这样的场景添加了稀疏列 - 在这些场中你有很多带有空值的列.
使用稀疏列 http://msdn.microsoft.com/en-us/library/cc280604.aspx
归档时间: |
|
查看次数: |
25625 次 |
最近记录: |