我遇到了大量查询的问题,并且有很多连接。
要简单地尝试解释它,查询将不会有一定数量的连接,这取决于运行报告的项目以及各种其他条件。
我不能在此处粘贴查询,因为它超出了字符数限制,所以这里是我现在正在运行的屏幕截图:
问题在于,其中一个报告在其中一个实时服务器上的运行速度非常慢。
我已经在我的本地计算机上测试了上述查询并且运行正常,并且执行 EXPLAIN 表示每个JOIN都使用类型" ref&#34 ;使用自动键,它会在一秒钟内返回。
但是,在现场计算机上,它耗时太长,以至于它将CPU使用率高达100%并且必须重新启动。我已经尝试逐个取出连接,并注意到一旦你达到某一点,它所花费的时间呈指数级增长,例如查询可能需要3-5秒,然后添加另一个连接将其带到大约10,然后另一个大约30,然后另一个大约60,直到它最终崩溃一切。
我在实时计算机上的查询上运行了 EXPLAIN ,我注意到了一些不同的东西。如果你有多达5个JOINS,那么他们都使用" ref"一切都很好,但是一旦你达到6个或更多连接,第6个及以上使用类型" ALL"。连接是第6个,或者你把它们放在哪个顺序没有区别。
我猜这就是问题所在,因为随着更多连接被添加回查询,他们都在&#34; ALL&#34;上进行连接,尽管我可能错了。< / p>
我已经测试了其他更简单的查询,添加超过6个连接并不会导致此问题,所以它似乎只是这个查询,但只在现场计算机上...本地和live有相同的键和索引。
有谁知道可能导致这种情况的原因是什么?因为我很困惑。
如果您需要额外信息,请与我们联系。
编辑:提一下我已经将数据库从现场复制,并且正在运行它,就像它在现场,在我的本地运行一样,并且它正常工作......
干杯。