0

準備済みステートメントを使用して、1 つまたは 2 つのクエリの応答時間を改善する最善の方法を理解しようとしています。私はここで多くの投稿を読み、実験してきました。

私の理解が正しいこと、および正しい方向に向かっていることを確認/明確化してください。特に、準備に実行を含めることができるかどうか、および準備内に条件ステートメントを組み込む方法を知りたいです。

実際の準備済みステートメントではなく、条件付きステートメントを mysqli コードの一部にする必要があるかどうか、またそうする場合にパフォーマンス コストが発生するかどうか疑問に思っています。

このコードは機能しません:

PREPARE get_Class_Session FROM
       "SELECT @COUNT:=COUNT(*) FROM (SELECT time_Table_Key,
                     date,
                     DATE_FORMAT(date, '%W') AS day,
                     slot,
                     class_Session 
        FROM `Time_Table` 
        WHERE (((date >=? && date <= ?) && DAYOFWEEK(date)=? && (slot >=? && slot <=?)) && class_Session ='0'))
                AS time_Table_Keys;
        IF @COUNT = '0' THEN
            EXECUTE update_Time_Table USING @start_Date, @end_Date, @day, @start_Time, @end_Time;
        END IF;
       ";
4

1 に答える 1

0

クエリの応答時間を改善するには、EXPLAIN queryステートメントの出力を分析し、ファイルソートと一時テーブルの使用を制限し、検査される行数を減らすためにアクションを実行する必要があります。
残念ながら、準備済みステートメントはこれらのどちらにも役立ちません。

于 2013-01-16T13:22:51.183 に答える