0

USERSテーブルを反復処理し、where句に基づいて選択されたユーザーごとに、一時テーブルの作成、プリペアドステートメントの使用など、LOOP内で一連のmysqlクエリを実行します。

これを行う場合、パフォーマンスの観点から最善の方法は何ですか。while、for each、for、repeat?

例(擬似コード)

foreach user_name in (select user_name from users where user_type = 'SP' and active = 'Y')
do
    set @l_query1 = concat("create temp_table_t1 select * from ...")
    PREPARE ..
    EXECUTE ...

    set @l_query2 = ... 
    ....
    .... etc .. 
done

わかりました。テーブルusersがあります。ここで、pK=user_nameです。

したがって、このクエリは高速に実行されます。このresultSetをループして、LOOP内の残りのmySQLクエリを実行する必要があります。単純なselectのresultSetをループするにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

whilefor-eachrepeatなどのパフォーマンスに違いはありません。

パフォーマンスの向上を求めている場合は、データベースでコードが実行するクエリの数をどこで減らすことができるかを検討してください。たとえば、クエリをユーザーごとに1回実行するのではなく、すべてのユーザーに対して1回実行すると非常に役立ちます。

于 2012-06-22T08:25:06.870 に答える