1

我刚刚将一台 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 多分钟。

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

4

1 回答 1

2

添加索引(Col1, Col2)以加快排序。

于 2013-02-13T12:31:26.047 回答