我正在尝试迭代地优化慢速MySQL查询,这意味着我运行查询,获取时间,调整它,重新运行它,获取时间等等。问题是时间是非静态的,并且稍后执行的查询与早期的执行完全不同。
我知道在执行之间清除查询缓存或关闭它。我也知道,在某种程度上,操作系统会以MySQL无法控制或理解的方式影响查询性能。但总的来说,我能做的最好的是这种迭代查询优化,以便我能比较苹果和苹果吗?
答案 0 :(得分:2)
用于查询优化的最佳工具是EXPLAIN
。这需要learn what the output means,但在这样做之后,您将了解MySQL(可怕的,破碎的,向后的)查询计划程序如何决定最好地检索所请求的数据。
查询参数的更改可能会导致查询计划截然不同,因此这可能会导致您遇到的一些问题。
您可能需要考虑using the slow query log来捕获可能以低性能运行的所有查询。也许你会发现有问题的查询在使用某些参数时只属于低性能类别?
答案 1 :(得分:1)
创建一个运行查询1000次的脚本,或者无论多少次迭代都会导致结果稳定。
然后按照上面描述的流程进行操作,但只是确保您不依赖于单次执行,而是依赖于平均多次执行,因为您是对的,因为行数改变,结果将不稳定,而你的机器正在做其他事情。
此外,如果对您的用例有意义,请尝试对查询使用大量输入。