MySQL5.0サーバーをMySQL5.5にアップグレードしたところ、以前は機能していた保存済みルーチンが壊れていることがわかりました。違い:MySQL5.5INSERT
は任意の順序で行しているようです。したがって、次のコードでは、このORDER BY
句は効果がありません。AFAIK、それはMySQL5.0でそれを持っていました。
INSERT INTO MyTable
SELECT * FROM MyOtherTable ORDER BY Col1, Col2 DESC;
人々は、定義上、順序はsでは無関係であると言います。テーブルから使用する場合にのみ使用します。問題は、カーソルを使用してテーブルをループし、複雑な操作を実行することです。確かに、代わりにカーソル定義にステートメントを置くことができます:INSERT
ORDER BY
SELECT
ORDER BY
DECLARE cur CURSOR FOR SELECT * FROM MyTable ORDER BY Col1, Col2 DESC;
しかし、それはルーチンを遅くします:MySQL5.0の10秒からMySQL5.5の10分以上に。
問題を解決する方法について何かアイデアはありますか?