我在MySQL中有一个查询,它基本上从一个包含大约500万行的表中返回大量的分组结果。我正在按8个单独的东西进行分组,并返回20个左右的列,其中许多是sum(case when())计算。我知道它应该花费很长时间,而我的电脑并不是最快的(虽然它并不是特别慢)。但它已经运行了9个小时,但仍然没有完成。这是正常的吗?似乎没什么可以花这么久。
答案 0 :(得分:0)
问:这是正常的吗?
答:对于产生大量中间结果集的查询,查询可能会运行很长时间,甚至超过9个小时。
如果查询做了不合理的工作而花费了不合理的长时间,那就没有异常。
但我们通常会避免编写执行异常工作的查询。
至于为什么查询做了这么多工作......可能是一个非常低效的执行计划,没有使用JOIN操作的索引,或者是一个巨大的中间结果集。
在另一个会话中,您可以执行SHOW PROCESSLIST
来验证查询是否实际正在运行。输出将包括会话处于当前状态的已用时间...