我刚刚将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分钟。
关于如何解决问题的任何想法?
答案 0 :(得分:2)
在(Col1, Col2)
上添加索引以加快订购速度。