6

MySQL で非常に単純な手順 (while ループ) を作成しました。

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 秒かかりますが、その理由がわかりません。

答えていただけますか?

4

1 に答える 1

3

はい、ストアド プロシージャは、C# や Java などの他のプログラミング言語に比べて非常に低速です。計算上はそうです。同じコードは、SQL Server でも遅くなります。おそらく MySQL よりも高速ですが、完全に実行されるまで数秒待つ必要があります。1 秒以内にそのようなタスクを完了するプログラミング言語でそれを行う方がよいでしょう。

つまり、他の言葉で:

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

于 2012-09-28T11:42:39.910 に答える