我有一个表有11列,现在大多数时候这个表上的三列将是空的,但如果我分成两个,每个表中有更多的查询。你的建议是什么该表应该分成两部分吗?
回答
还有一些其他变量需要考虑。有些想到的是:
- 表格有多大?
- 三列通常是空的有多大?
- 什么类型的查询使用该表?
- 列中的数据类型是什么?例如,如果它属于查找表中,那么避免重复数据可能是有意义的。这个问题不一定与问题密切相关,但值得考虑。
- 字段索引(或在任何索引中使用)?如果是这样,它可能会增加INSERTS和DELETES的成本(如果它们是空的并且在UPDATE操作期间保持不变,则不会太多)。
一般来说,虽然我会说,把它作为一个单独的表是没问题的。 11列并不是那么多。因此,除非表格非常大(相对术语)并且空间非常重要,否则单个表格的简单性是一个好主意,特别是如果数据在逻辑上属于表格。
该表包含大约50,000条每秒更新100条记录。三列中的两列是int,一个是浮点数。三列包含视图,点击,ctr。 – Vish 2011-03-29 23:35:42
根据这些信息,我认为离开表格是有意义的。数据似乎是相关的,并且(假设float为4个字节),那么节省的12个字节是最小的,并且可能对更新没有什么影响。它可能会增加INSERTS的成本,但可能不值得将数据移动到另一个表的麻烦。但是,如果这些字段被索引,它可能会有所作为。我会添加一些关于这个答案的信息。 – 2011-03-29 23:42:32
如果你主要关心的是速度,那么将表保持在一起会给你更便宜的SELECT查询,因为你不会加入JOIN。
好吧,我会说**取决于**很多事实**。更少的表格更适合内存,因此会更快。 – zerkms 2011-03-29 23:23:08
就我个人而言,我认为有11列,你的表现收益将是最小的任何方式。我认为在这一点上更偏好个人喜好。
- 1. 我应该将组织表分成两个表吗?
- 2. 我应该把这个表分成两个吗?
- 3. 应该FindUsersByName包含部分匹配吗?
- 4. 什么应该/不应该成为行动的一部分?
- 5. 我应该将这个Django项目分成两个项目吗?
- 6. 什么时候DB表应该分成两个单独的表?
- 7. 我应该将表格分成多个表格吗?
- 8. 我应该将五星级评分换成10分排名吗?
- 9. 我应该避免多部分/表单请求吗?
- 10. 我应该通过partials渲染表单的可选部分吗?
- 11. 我应该把一个更大的mysql表分成多个吗?
- 12. 什么时候应该将JSON分成更小的部分?
- 13. 词法分析器应该完成哪部分解析?
- 14. 我应该对表格进行分区/子分区吗?
- 15. 应该使用MyApp.exe分发MyApp.vshost.exe吗?
- 16. HTTP ETags应该区分大小写吗?
- 17. 单个开发者应该分支吗?
- 18. 我应该预先分配std :: stringstream吗?
- 19. 我应该删除合并分支吗?
- 20. 我应该分开我的桌子吗?
- 21. 我应该拆分我的edmx吗?
- 22. 共享部分应该去哪里?
- 23. 我的“App ID”部分应该如何?
- 24. 'shared/error_messages'部分不呈现时应该
- 25. 我应该用两个if语句分开吗?
- 26. 将wordpress分成两部分
- 27. 将PDL分成两部分
- 28. 将列分成两部分
- 29. 我应该生成HTML表单吗?
- 30. 接口应该是用例图中系统的一部分吗?
@ user658911:现在的结构是否会遇到一些问题? – zerkms 2011-03-29 23:21:40
不,但要提高可伸缩性和可靠性 – Vish 2011-03-29 23:42:10
@ user658911:如果它的工作原理 - 不要改变它 – zerkms 2011-03-29 23:45:40