我只是想问一下,存储数据的两种方法中哪一种会产生更好的结果
一个。将数据存储在一个包含超过20列的单个表中
OR
B中。将数据分配到两个表中,每个表分别为15和6列
还有一件事,即使我分发数据,我仍然可能在60%的情况下同时访问这两个表...
所以,这是两个中最好的选择...
由于
答案 0 :(得分:2)
即使在JOIN
上,PRIMARY KEY
也需要几倍于顺序扫描的时间。
当然最好看一下这张桌子,但我的教育猜测是将它们放在一起会更好。
但是,如果您所做的是规范化(而不仅仅是表格拆分),那么规范化设计可以更快。
例如,如果您的数据如下所示:
id value
1 Really really long value 1
2 Really really long value 1
3 Really really long value 1
…
1000 Really really long value 2
1001 Really really long value 2
1002 Really really long value 2
…
,扫描此表需要很长时间,因为值很大。
规范化表将提供以下内容:
id value
1 1
2 1
3 1
…
1000 2
1001 2
1002 2
…
val_id value
1 Really really long value 1
2 Really really long value 1
扫描4
字节整数的行比千字节VARCHAR
快得多,即使额外JOIN
,第二种设计的查询也会更快完成。< / p>
答案 1 :(得分:1)
我想这取决于数据库架构。如果只有小字段,方法A可能更好。但是,如果有较大的字段可以放入较少使用的表中,则可以按照方法B的建议单独存储它们。
答案 2 :(得分:1)
如果不向我们提供更多细节,我们的答案就不可能是明确的。你会拆分列以避免重复吗?如果是这样,您可能会看到简单查询的速度提升。但是,如果您的查询涉及复杂的连接,则可能会出现性能损失。其中很大程度上取决于您如何索引表格。
在您的问题中,没有足够的信息可以提供更好的答案,而不会进入2小时的数据库设计讨论。
我建议在stackoverflow上阅读how-do-i-ask-for-help-optimizing-fixing-queries-in-mysql以了解如何向MySQL寻求帮助。