在数据库中有大约40-50列的表是否正常?在数据库中有大约40-50列的表是否正常?
回答
取决于您的数据模型。将数据分解为多个表格并将它们相互关联起来会有点“更加简洁”,但它也可能是可能的,因为您的数据可能无法或者没有意义的被分解。
如果你想有更少的列只是“为它的缘故”,并没有显著的性能下降 - 没有这个必要。如果您发现自己使用的列数少于表格中的数量,请将其分解...
取决于你所说的正常。如果你是一个大企业公司,这是不正常的,因为你有太少的专栏。
但是,如果你发现很难与许多列工作,你可能有问题,需要做一些事情:无论是抽象的多列离开或拆分数据模型的东西更容易管理。
这是不寻常的待去归一化的数据库,以提高性能:改写(munging)表一起导致更少的查询过程中加入。
所以去归一化的表往往有更多的列,以及重复数据可以成为一个问题,但有时这是得到你所需要的性能的唯一途径。
我好像被问这个问题,在每一次面试时,我去:
你什么时候会denormalise数据库?
我不知道“正常”,但它不应该造成任何问题。如果你有很多“可选”列,大多数时候这些列是空的,或者很多字段非常大,而且不经常查询,那么模式可能会被标准化或调整得更多一些,但是列数本身不是问题。
是的,如果这40-50列全都依赖于密钥,整个密钥以及除表的密钥外。
如果这些列很大且很少被查询(垂直分区),您可能仍然希望打破(规范化)表的性能原因。 – Thilo 2010-11-16 10:28:37
你可能会这样做,但是你可能会在一个有5列的表中做这件事。 40或50并不是一个巨大的数字。 – 2010-11-16 10:29:57
列数与数据是否规范化没有关系。这是列会告诉你的内容。电话1,电话2,电话3是否为 ?那么桌子肯定没有正常化,应该分解。但如果它们都是与关键值完全一致的不同项目,则可以将40-50列标准化。
这并不意味着你总是希望将它们存储在一张表中。如果这些列的组合大小大于数据库中每行数据所允许的实际字节数,则最好在创建两个或多个表之间建立一对一的关系。否则,如果所有字段都处于或接近其最大大小,则存储数据时会遇到问题。如果大部分时间不需要某些字段,也可以使用单独的表格。
- 1. 数据库正常化是否正确?
- 2. 确定数据库是否正常化
- 3. 在数据库中存储大型列表的正确方法
- 4. 在对象中有对象列表是否正常?
- 5. 在大表中,子(子)集合中的键值是否正常?
- 6. 在只读数据库上获取SQLITE_BUSY是否正常?
- 7. 数据库中所有表的列表
- 8. SSIS中的Access数据库目标是否有大小限制?
- 9. 如何检查数据库中是否存在表或列?
- 10. 是否有JSF多列数据表?
- 11. 是否有可能在MySQL数据库中获得列长度?
- 12. 是否有YAML数据库?
- 13. 正常化在一个数据库中
- 14. H2数据库是否适合作为大型表的嵌入式数据库?
- 15. 散列映射数据类型是否有任何约束
- 16. 数据库正常化词汇表
- 17. 检查SQL服务器数据库是否正常工作
- 18. 巨大的数据库列表
- 19. 更新非常大的PostgreSQL数据库表有效
- 20. 检查网站表单是否正在提交到数据库
- 21. 是否有根据正则表达式生成数据的库? (Python或其他)
- 22. 获取数据库中唯一约束和索引的列表
- 23. 是否使用散列表或光标来检查本地数据库中是否有可用数据
- 24. HTML5本地数据库查找数据库表是否存在
- 25. 如何更新数据库表中是否存在数据
- 26. 数据库索引 - 表的大小是否重要?
- 27. Adavanstage数据库服务器免费表和Advanstage数据库之间有什么区别什么是正常表
- 28. 从现有数据库创建数据库表正在进行
- 29. 是否对SQLite数据库的大小有限制?
- 30. 索引字符串列中的中等大小数据库中的正常插入时间是多少?
退房http://stackoverflow.com/questions/489003/sql-optimization-how-many-columns-on-a-table - 你应该得到你在这个问题上回答的大部分问题 – InSane 2010-11-16 10:18:47
此外,相关的问题是HTTP://计算器。com/questions/331323/how-many-columns-are-too-many-for-a-sql-2005-table – InSane 2010-11-16 10:20:21