MySQL查询速度

8oomwypt  于 2023-11-16  发布在  Mysql
关注(0)|答案(3)|浏览(97)

我只是想问一下,这两种存储数据的方法中,哪一种会给我更好的结果给予
A.将数据存储在具有20多列的单个表中

B.将数据分配到两个表中,每个表有15列和6列
还有一件事,即使我分发了数据,在60%的情况下,我仍然需要同时访问两个表。
那么,两者中哪一个是最好的选择呢?

hfsqlsce

hfsqlsce1#

即使在PRIMARY KEY上,JOIN也需要几倍于顺序扫描的时间。
当然,最好是看到table,但我有根据的猜测是,让他们在一起会更好。

如果要拆分的列很小且基数很高(有很多不同的值),则将其保留在表中。

但是,如果您所做的是规范化(而不仅仅是表拆分),那么规范化设计可以更快。
例如,如果你的数据看起来像这样:

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字节整数的行要比扫描千字节整数的行快得多,即使有额外的JOIN,第二种设计的查询也会更快地完成。

pwuypxnk

pwuypxnk2#

我想这取决于数据库模式。如果只有小字段,方法A可能更好。但是如果有大字段可以放在不太使用的表中,那么按照方法B的建议将它们分开存储可能更有意义。

yhxst69z

yhxst69z3#

你会拆分列以避免重复吗?如果是这样,你可能会看到简单查询的速度增加。但是,如果你有涉及复杂连接的查询,你可能会看到性能下降。这在很大程度上取决于你如何索引表。

相关问题