INSERT到MySQL表时忽略ORDER BY

时间:2013-02-13 12:29:09

标签: mysql sql-order-by sql-insert

我刚刚将MySQL 5.0服务器升级到MySQL 5.5,发现以前运行的存储例程已经破坏。差异:MySQL 5.5似乎以任意顺序排列INSERT行。因此,在以下代码中,ORDER BY子句无效。 AFAIK,它曾经在MySQL 5.0中拥有它。

INSERT INTO MyTable
SELECT * FROM MyOtherTable ORDER BY Col1, Col2 DESC;

根据定义,人们会说INSERT中的order is irrelevant:在使用表格中的ORDER BY时使用SELECT。问题是我使用游标来循环表并执行复杂的操作。当然,我可以将ORDER BY语句放在游标定义上:

DECLARE cur CURSOR FOR SELECT * FROM MyTable ORDER BY Col1, Col2 DESC;

但这会减慢常规:从MySQL 5.0上的10秒到MySQL 5.5上的10分钟。

关于如何解决问题的任何想法?

1 个答案:

答案 0 :(得分:2)

(Col1, Col2)上添加索引以加快订购速度。