我需要创建一个包含一千个字段(列)的表格,我不知道如何处理表现以及如何维护它,请帮助我提出建议。数据库性能和1000列维护。
0
A
回答
1
如果绝大多数时间大多数值为NULL,那么您应升级到SQL Server 2008并使用稀疏列,请参阅Using Sparse Columns和Using Column Sets。
如果你的列值不是大部分NULL,那么我质疑你的数据模型的健全性。
0
你将不得不首先要做的事情
- 正常化
- 定义实体,并分离出不同的表。绘制ER图和
你会得到更多的想法。 - 如果列是varchar或text,则不要超过15列表列,因为
那么SQL将不得不将数据存储在不同的页面中。如果列是
布尔值,那么它可以是大约30. - 根据您的数据正确定义聚簇索引,因为这样可以优化查询。
由于问题的性质没有太多的细节,答案也是通用的,从100英尺的角度来看。
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表是有点依赖于应用程序,但一般情况下会是这样那就是区别从不为空,每次需要实体时都会被访问,我会将其限制为10个左右的项目。
让我猜这是一个医疗应用程序?
相关问题
- 1. 数据库维护
- 2. Android的性能维护json文件或sqlite数据库?
- 3. Eclipse性能维护
- 4. 数据库从未维护
- 5. 维护NDB数据库中的特性的唯一性
- 6. 维护数据
- 7. MongoDB - 自动维护数据完整性
- 8. Facebook如何维护数据库?
- 9. 谁在Android中维护MediaStore.Audio.Media数据库?
- 10. 维护数据库的类似副本
- 11. 如何维护本地数据库iphone
- 12. 我应该如何维护数据库?
- 13. php机器人维护数据库?
- 14. 可维护性数据库集成测试
- 15. 在数据库中维护教师可用性计时
- 16. Salesforce数据库集成(维护集中式数据库)
- 17. 可维护性
- 18. 数据库性能和数据类型
- 19. 多维数组 - 维护数据的完整性
- 20. 库存维护
- 21. 维护列表<T>在缓存像数据库
- 22. 维护数据库中的唯一值列表
- 23. 如何维护LDAP系统和关系数据库的完整性?
- 24. 访问自动编号和维护唯一性在多用户数据库
- 25. 如何在维护历史和当前数据时获得性能?
- 26. 维护用户对ASP.NET的多个数据库的数据完整性
- 27. 要使用或不使用计算列的性能和可维护性
- 28. 可维护性一个C库
- 29. 维护并行,完全相同的数据库:MySQL和SharePoint FBA
- 30. MySQL数据库维护与MyISAM和InnoDB表
为什么你需要1000列? –
来一次@AdamWagner:我几乎肯定你*不*需要1000列。描述你的场景;但我敢打赌,你阅读数据库规范化将是一个更好的解决方案。 – Amadan
请不要这样做。它是可以完成的那些事情之一,但不应该有很多原因。一个正常的人不能保存1000条信息。 2. SQL Server每个数据行有8k的限制,所以你要使用大对象类型,我想你会使用1000 varchar(max),你将永远无法优化它。它现在不是数据库,它是一个电子表格。 –