【发布时间】:2021-10-21 14:33:58
【问题描述】:
在 JOIN 的情况下,尤其是在一对多关系中,结果集通常会在结果中包含大量重复信息。
例如,
| TABLE_A_ID | TABLE_A_FIELD_ONE | TABLE_A_FIELD_TWO | TABLE_B_ID | TABLE_B_FOREIGN_KEY | TABLE_B_FIELD_ONE |
|---|---|---|---|---|---|
| 12 | MARK | POLIO | 41 | 12 | SHOE |
| 12 | MARK | POLIO | 42 | 12 | SHIRT |
| 12 | MARK | POLIO | 43 | 12 | BOOT |
| 12 | MARK | POLIO | 44 | 12 | HAT |
| 12 | MARK | POLIO | 45 | 12 | GLOVE |
如您所见,12、MARK、POLIO 连续发送了六次。在我的实际情况中,我注意到我连续发送了数千次相同的数据,通过线路从 db 到应用服务器发送的数据量超过 20 倍,内存也增加了 20 倍。
我正要开始优化其中的 ****,但后来我意识到 mysql 驱动程序很可能已经对此进行了优化,例如只发送表 b 列和表 a 列用于何时TABLE_B_FOREIGN_KEY 变化。
确实以这种或另一种方式进行了优化,还是我应该停止使用连接并改为往返数据库?
【问题讨论】:
-
如你所见,12, MARK, POLIO 被发送了 6 次 其实是 5 次 :)
-
mysql 驱动程序可能已经对此进行了优化不,根据您编写的查询结果是正确的
-
或者我应该停止使用连接,而是进行往返绝对不是,往返比将一些额外数据向上移动更糟糕
-
结果是正确的,但是我们说的是优化,不是正确性。
-
好的,那么您究竟是如何考虑要优化这个的
标签: mysql resultset mysql-connector database-optimization