我有很多 INNER JOINS 要做,实际上需要很长时间才能执行。我还有其他方法可以做到这一点吗?更快,也许更短?
SELECT fermat.*, .... -- around 17 other tables FROM fermat
INNER JOIN bla_bla on ....
-- around 17 other INNER JOINS
最佳答案
简单的答案是否定的。如果您需要使用所有表,那么您需要连接所有表。因此,实际上没有任何方法可以大幅提高查询性能。我在您的查询中看到的一个小变化是仅从表中选择您需要的列,并在不使用所有列时避免使用 table.*
。
但是,优化表格可能会有所帮助。为了提高性能,您可以确保在您要加入的每一列上都设置索引。
由于我们无法看到您的整个查询,因此其他地方可能存在瓶颈。在 MySQL 中,您可以执行 EXPLAIN SELECT...
显示您计划的执行路径。这在调试或尝试查找瓶颈时非常有帮助。
关于mysql - 如何使具有许多 JOIN 语句的 SQL 查询更短、更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58376454/