php - 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
任何人都可以改进此查询并减少执行时间
谢谢
解决方案
我可以提供以下索引建议,这可能会提高您的查询性能:
CREATE INDEX idx ON crm_order (orderno, col1, col2, ...);
crm_order
如果您在表中仅说 4-5 个其他列要涵盖,我只会建议这样做。如果你有更多,不使用这个索引可能是有意义的。
如果它有帮助,索引通过让 MySQLorderno
从OrderCalculation
表中快速查找每个值来工作。这也假设 MySQL 将对表进行全表扫描OrderCalculation
。您可能希望首先运行EXPLAIN
当前查询以查看您所处的位置。
推荐阅读
- java - Java AWS 开发工具包 S3。按元数据查找对象
- javascript - JavaScript中let变量的提升
- html - 如何使容器缩小以适应其内容?(例如,缩略图的包装画廊)
- java - 原始 java 代码在 Spark 中究竟执行在哪里?
- security - 如果任何其他所有者授予所有者访问 GCP 中其他一些帐户的权限,我会收到通知吗?
- azure - 如何将 Twillio Voice 与 Azure Bot Service 连接?
- python - 从python中的列表中提取数据
- javascript - NodeJS定时器异步而不停止代码并且不使用setInterval
- oracle - 如何检查oracle数据库中的存储过程是否更新了列或表
- ios - 将我的备忘录背景保持为白色,主题为深色