我只是想问这两种存储数据的方式中哪一种可以给我更好的结果
A.将数据存储在具有超过 20 列的单个表中
或
B.将数据分布到两个表中,每个表有 15 列和 6 列
还有一件事,即使我分发数据,在 60% 的情况下我仍然可能必须同时访问两个表...
那么,两者中哪个是最好的选择?
A
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
,第二种设计的查询也会更快地完成。
我想这取决于数据库模式。如果只有小字段,方法 A 可能更好。但是,如果有大字段可以放入较少使用的表中,则按照方法 B 中的建议单独存储它们可能是有意义的。
您会拆分列以避免重复吗?如果是这样,您可能会发现简单查询的速度有所提高。但是,如果您的查询涉及复杂的联接,您可能会发现性能受到影响。这很大程度上取决于你如何索引你的表。