我有查询
select field from table order by field asc limit 4000, 30;
表上有这么简单的选择会产生大的延迟。现场有索引。 如何摆脱'order by'并加速限制并通过select获得相同的结果?
我的主张是改变行的顺序,然后只做简单的select field from table
。你能提出更好的建议吗?
答案 0 :(得分:0)
字段的数据类型会影响订单的快速程度。整数列通常最快,文本列最慢。如果您要排序的列的数据类型是文本的,我建议使用数字列进行排序。
为您订购的列编制索引应该有助于提高性能,但MySQL可能会忽略它并执行全表扫描。 FORCE INDEX可能有助于加快排序速度。
更改表中列的物理顺序将不具有可预测的效果,因为在MySQL中未定义行的默认排序,或者实际上我知道的任何SQL数据库。随着行的添加,更改和删除,表中行的物理位置会随着时间的推移而发生变化,因此您无法依赖它进行排序。
http://www.mysqlperformanceblog.com/2006/09/01/order-by-limit-performance-optimization/有一些关于优化排序的有用提示。