首页 > 解决方案 > mysql两表join查询执行耗时(每表4000条记录)

问题描述

我为两个表编写了一个连接查询,每个表有 4000 条记录,以使用 php 获取数据。我在 mysql 中执行查询,需要 32 秒。

这是查询

SELECT Distinct a.*,b.* 
FROM OrderCalculation a right join  crm_order b on a.orderid = b.orderno  
order by b.orderno desc LIMIT 20 OFFSET 0

任何人都可以改进此查询并减少执行时间

谢谢

标签: phpmysqldatabase

解决方案


我可以提供以下索引建议,这可能会提高您的查询性能:

CREATE INDEX idx ON crm_order (orderno, col1, col2, ...);

crm_order如果您在表中仅说 4-5 个其他列要涵盖,我只会建议这样做。如果你有更多,不使用这个索引可能是有意义的。

如果它有帮助,索引通过让 MySQLordernoOrderCalculation表中快速查找每个值来工作。这也假设 MySQL 将对表进行全表扫描OrderCalculation。您可能希望首先运行EXPLAIN当前查询以查看您所处的位置。


推荐阅读