-1

我正在尝试从 20 多分钟的运行时间中获取一份报告,并且我已经跟踪了一个 mysql 查询的瓶颈,该查询使用 5 个连接和 3 个子查询在一个数据集中返回所有结果。到目前为止,我的最大瓶颈似乎是:在支付表上加入 stock 表是 stock.id 匹配 payment.stock_id 并且 payment.type 是这种类型, payment.status 是这种状态。我正在慢慢地将其分解为各种查询,并让 Java 决定要保留和丢弃哪些记录,但我想知道 mysql 中是否有一种有效的方法来获取几个结果集,也许是存储在内存中的表,然后查询反对那些?我的一些结果集会非常大,在最坏的情况下有几十万个条目。

提前致谢

4

1 回答 1

0

您有一些创建物化视图的选择,以便您可以按时间间隔运行它,但您基本上会对数据的有效性产生延迟影响。但肯定更快。

其次是索引连接列。

子选择通常比 JOIN 更昂贵,因此请尝试将您的子选择合并到连接中。

有很多关于这些问题的 SQL 优化书籍值得一读。但是不知道您的数据库或架构或索引以及连接和子选择的方式。这几乎就像在黑暗中接球一样。

于 2012-04-04T17:40:37.840 回答