2012-09-28 40 views
6

私は、MySQLで非常に簡単な手順(whileループ)を作っ:MySQLの非常に遅いループ

BEGIN 

    DECLARE start INT; 
    DECLARE ending INT; 

    SET start = 1; 
    SET ending = 4000000; 

    WHILE (start <= ending) DO 
     SET start = start + 1; 
    END WHILE; 
END 

これは、デュアルコアマシン(100%上の各コア)に〜26秒かかり、私はしないでください理由を理解する。

私に答えを教えてください。

+1

SQLにはループが非常に高速なプログラミング言語はありません。 –

+0

@ juergen d:それほど高速ではありませんが、地獄のように遅いです...それは** 8-9 THOUSANDです**平均whileループよりも遅いです。 – recis

答えて

3

はい、ストアドプロシージャは、C#やJavaなどの他のプログラミング言語に比べて非常に遅いです。それは計算上の賢明なことです。 SQL Serverでも同じコードが遅くなります。おそらくMySQLより速いですが、完全に実行されるまで数秒待っています。このような作業を1秒以内に完了するプログラミング言語でこれを行うと、より効果的です。だから、他の言葉で

遅いストアドプロシージャのパフォーマンスが、通常、データベースに計算コストの高いビジネスロジックを実装するのが賢明ではない理由の一つです。ネットワークがボトルネックにならないようにするには、アプリケーション層にデータを抽出し、データベースへの往復が数回かかる場合でも、選択したプログラミング言語でデータを処理するほうがよい場合がよくあります。