查询中的“order by”在MySQL中需要花费很多时间。 SHOW PROFILES显示分拣过程所花费的时间。是否有任何设置/解决方法会缩短排序时间?
答案 0 :(得分:8)
如果您在订购的字段上没有索引,请添加一个:
“在某些情况下,MySQL可以使用索引来满足ORDER BY子句,而无需进行任何额外的排序。”
编辑:(来自MySQL文档中的section on ORDER BY optimization。)
答案 1 :(得分:5)
为您订购的字段添加适当的索引应该可以解决问题。
答案 2 :(得分:1)
您可以通过在希望结果排序的列上添加索引来提高返回排序结果的速度。
答案 3 :(得分:1)
ALTER TABLE `tablename` ADD INDEX `indexname` (`columnname`);
通常,indexname与columnname相同。
答案 4 :(得分:0)
查询运行缓慢的原因可能是表没有编入索引;如果是这种情况,请创建合适的索引。
答案 5 :(得分:0)
您能告诉我以下两个命令的输出: show create table tbl_name 解释“你的选择查询”
如果MySQL认为几乎所有行都需要检查,除非有覆盖索引,否则不会使用索引。由于每个表只使用一个索引,因此尝试按照该索引的一部分列进行排序(如果它正在被使用)。