如何摆脱排序或优化查询

时间:2011-04-19 02:29:51

标签: php mysql

我有查询

select field from table order by field asc limit 4000, 30;

表上有这么简单的选择会产生大的延迟。现场有索引。 如何摆脱'order by'并加速限制并通过select获得相同的结果?

我的主张是改变行的顺序,然后只做简单的select field from table。你能提出更好的建议吗?

1 个答案:

答案 0 :(得分:0)

字段的数据类型会影响订单的快速程度。整数列通常最快,文本列最慢。如果您要排序的列的数据类型是文本的,我建议使用数字列进行排序。

为您订购的列编制索引应该有助于提高性能,但MySQL可能会忽略它并执行全表扫描。 FORCE INDEX可能有助于加快排序速度。

更改表中列的物理顺序将不具有可预测的效果,因为在MySQL中未定义行的默认排序,或者实际上我知道的任何SQL数据库。随着行的添加,更改和删除,表中行的物理位置会随着时间的推移而发生变化,因此您无法依赖它进行排序。

http://www.mysqlperformanceblog.com/2006/09/01/order-by-limit-performance-optimization/有一些关于优化排序的有用提示。