Jas*_*ett 10 mysql sql query-optimization
当我对我的查询做一个解释时
我看到它在第一行的"Extra"下面有"Using temporary; Using filesort".我知道这很糟糕,但我不知道它究竟是什么意思或如何解决它.
如果你想查看我的查询,这里是一个更普遍的问题,我问同一个查询:MySQL查询优化和一个菜鸟的EXPLAIN.作为参考,查询涉及24个表和23个连接.
我现在的问题是:
如前所述,"使用filesort"和"使用临时"并不总是意味着糟糕的性能.
以下是一些用于提高ORDER BY语句性能的基本指南.亮点:
如果要增加ORDER BY速度,请检查是否可以让MySQL使用索引而不是额外的排序阶段.如果无法做到这一点,您可以尝试以下策略:
增加sort_buffer_size变量的大小.
增加read_rnd_buffer_size变量的大小.
通过声明列只需要保存存储在其中的值所需的大小,每行使用更少的RAM.例如,如果值不超过16个字符,则CHAR(16)优于CHAR(200).
首先尝试使用索引(确保您要排序的字段具有索引).请注意,增加系统变量sort_buffer_size的值和read_rnd_buffer_size也可以对其他查询产生负面影响-特别是考虑它们设置为你需要他们,让他们在默认情况下,所有其他会话的会话.