我有一个sql...它是一个“SELECT”。我无法展示它,但它有 5 个并集和很多连接(内部和左侧)。我还创建了所有必要的索引。在本地计算机上,只需不到一秒(约 0.5 秒)即可获得结果。但在服务器上它执行的时间非常非常长。 本地计算机和服务器上的数据库是相同的。我最近转储了服务器数据库并将其恢复到本地计算机上。 大约 35 分钟前,我启动了此 sql 的“EXPLAIN”,它仍在运行。我还在进程列表中看到“复制到临时表”标签以进行解释。 所有表都经过优化。 我使用 MyISAM 和 InnoDB 引擎进行了测试。 服务器平均负载小于1,MySQL也没有负载。
这可能很重要 - 云服务上的服务器。我无法访问云统计信息 - 只需使用服务器。
你能给我什么建议吗?
最佳答案
我找到原因了。 正如我之前所说(在评论中),我对每个子查询进行了解释,并注意到本地计算机上的相同解释存在一些差异(对于 5 个子查询中的 2 个)。 它通过创建额外的索引来解决。 不同的机器 - 不同的结果。我预计会有一些差异,但我什至无法解释。这真是一个奇怪的事。只帮助了部分 EXPALIN。
谢谢大家。
关于mysql - 查询执行速度非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18337504/