我需要创建一个包含一千个字段(列)的表格,我不知道如何处理性能以及如何维护它请帮我提出建议。
答案 0 :(得分:1)
如果大多数时候大多数值为NULL,那么您应该升级到SQL Server 2008并使用稀疏列,请参阅Using Sparse Columns和Using Column Sets。
如果您的列值大多不是NULL,那么我会质疑数据模型的完整性。
答案 1 :(得分:0)
首先要做的事情
由于问题的性质没有太多细节,因此答案也是通用的,从100英尺的角度来看。
答案 2 :(得分:0)
同样,请不要这样做。
查看有关数据库的Entity Attribute Value模型。它将帮助您在实体上存储大量稀疏属性,并且不会使数据库失效。
基本概念如下所示
create table #attributes
(
id int identity(1,1),
attribute varchar(20),
attribute_description varchar(max),
attribute_type varchar(20)
)
insert into #attributes values ('Column 1','what you want to put in column 1 of 1000','string')
insert into #attributes values ('Column 2','what you want to put in column 2 of 1000','int')
create table #entity
(
id int identity(1,1),
whatever varchar(max)
)
insert into #entity values ('Entity1')
insert into #entity values ('Entity2')
create table #entity_attribute
(
id int identity(1,1),
entity_id int,
attribute_id int,
attribute_value varchar(max)
)
insert into #entity_attribute values (1,1,'e1value1')
insert into #entity_attribute values (1,2,'e1value2')
insert into #entity_attribute values (2,2,'e2value2')
select *
from #entity e
join #entity_attribute ea on e.id = ea.entity_id
#entity表中的内容与#attribute表中的内容之间的区别在某种程度上取决于应用程序,但是一般规则是永远不会为null并且每次需要实体时都会访问,我会将此限制为10个左右的项目。
我猜这是一个医学应用程序?