我刚刚将一台 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;
人们说,根据定义,顺序在s 中是无关紧要INSERT
的:只在使用from tableORDER BY
时使用。SELECT
问题是我使用游标来循环表格并执行复杂的操作。当然,我可以将ORDER BY
语句放在游标定义上:
DECLARE cur CURSOR FOR SELECT * FROM MyTable ORDER BY Col1, Col2 DESC;
但这减慢了例程:从 MySQL 5.0 的 10 秒到 MySQL 5.5 的 10 多分钟。
关于如何解决问题的任何想法?