1

MySQL5.0サーバーをMySQL5.5にアップグレードしたところ、以前は機能していた保存済みルーチンが壊れていることがわかりました。違い:MySQL5.5INSERTは任意の順序で行しているようです。したがって、次のコードでは、このORDER BY句は効果がありません。AFAIK、それはMySQL5.0でそれを持っていました。

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

人々は、定義上、順序はsでは無関係であると言います。テーブルから使用する場合にのみ使用します。問題は、カーソルを使用してテーブルをループし、複雑な操作を実行することです。確かに、代わりにカーソル定義にステートメントを置くことができます:INSERTORDER BYSELECTORDER BY

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

しかし、それはルーチンを遅くします:MySQL5.0の10秒からMySQL5.5の10分以上に。

問題を解決する方法について何かアイデアはありますか?

4

1 に答える 1

2

(Col1, Col2)注文をスピードアップするためにインデックスを追加します。

于 2013-02-13T12:31:26.047 に答える