我的查询显示如下:
SELECT * FROM table
WHERE field like '%keyword%'
ORDER BY (vote_up-vote_down) DESC
排序正在运行我的sql资源,有什么办法可以改进吗?
答案 0 :(得分:0)
NO ,因为mysql需要评估表达式并计算vote_up-vote_down
的实际结果。
因此,文件排序是不可避免的
您可以检查以下内容,以便在排序
上获得更快的性能http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html
如果要增加ORDER BY速度,请检查是否可以让MySQL使用索引而不是额外的排序阶段。如果无法做到这一点,您可以尝试以下策略:
增加sort_buffer_size变量的大小。
增加read_rnd_buffer_size变量的大小。
每行使用较少的RAM,只需将列声明为保存存储在其中的值所需的大小。例如,如果值不超过16个字符,则CHAR(16)优于CHAR(200)。
将tmpdir更改为指向具有大量可用空间的专用文件系统。此外,此选项接受以循环方式使用的多个路径,因此您可以使用此功能将负载分散到多个目录中。路径应该用Unix上的冒号字符(“:”)和Windows,NetWare和OS / 2上的分号字符(“;”)分隔。路径应该是位于不同物理磁盘上的文件系统中的目录,而不是同一磁盘上的不同分区。