【发布时间】:2019-03-11 03:37:00
【问题描述】:
我的sql性能有问题,我的db行太多,所以查询时间很长。
SELECT * FROM A JOIN B ON A.id = B.id where ...
所以我改成
SELECT * FROM A where A= a...
SELECT * FROM B where B= b...
我从这里的 2 个查询中得到了 2 个结果集。 有人可以帮助我如何以最佳性能加入 2 个结果集。 我必须拆分为 2 个查询,因为这个数据库有 1000 万条记录。
【问题讨论】:
-
您不可能编写比数据库中的连接实现更好的连接。
-
如果您需要帮助调整 SQL 查询,您应该在 dba.stackexchange.com 上提问,在那里您可以在 Advanced Querying including window-functions, dynamic-sql, and query-performance 上提问。
-
我可以将 2 个结果集解析为 hashmap 并用 key 连接,O(n) 将是 2n,比 join sql n^2 更好
-
SQL 引擎可以进行散列连接、合并连接、嵌套循环连接等,而且它们可能也得到了更好的优化。您所需要的只是调整 SQL 的能力。
-
我用的是mysql,据我所知,mysql不支持hash join :(