sql >> データベース >  >> RDS >> Mysql

複数のクエリVSストアドプロシージャ

    推奨事項は、クエリを実行するスクリプトがどこにあるかによって部分的に異なります。クエリを実行するスクリプトがMySQLインスタンスと同じサーバー上にある場合、それほど大きな違いは見られませんが、1つのストアドプロシージャと比較して、200kクエリの実行にはわずかなオーバーヘッドがあります。

    どちらの方法でも、ストアドプロシージャとして作成することをお勧めします。おそらくいくつかの手順が必要になります。

    1. 操作ごとに実行する10個のステートメントを1回の呼び出しに結合する手順
    2. CURSORを使用して引数のテーブルを反復処理できるプロシージャ 手順1にフィードする

    あなたのプロセスは

    1. プロシージャ2によってプロシージャ1に入力される引数をテーブルに入力します
    2. 手順2を実行します

    これにより、MySQLサーバーに20000 * 10回接続する必要がなくなるため、パフォーマンスが向上します。リクエストごとのオーバーヘッドは小さいかもしれませんが、ミリ秒が加算されます。リクエストあたりの節約が0.1ミリ秒であっても、それでも20秒節約されます。

    別のオプションは、上記のデータベーステーブルからデータをプルするように10個のクエリを調整することにより、すべての20kデータ操作を一度に実行するようにリクエストを変更することです(実行可能な場合)。これらすべての鍵は、引数を1回のバッチ挿入でロードし、プロシージャ内でMySQLサーバーのステートメントを使用して、それ以上のラウンドトリップなしで引数を処理することです。




    1. 致命的なエラー:未定義のメソッドmysqli ::bind_param()の呼び出し

    2. SQLServerのHibernate構成ファイルを構成する方法

    3. PHP / MySQL-複数形を含みますが、単数形は除外します

    4. varchar2(n BYTE | CHAR)デフォルト->CHARまたはBYTE