2013-01-16 139 views
0

我想了解如何最好地使用準備語句來提高一個或兩個我的查詢的響應時間。我在這裏閱讀了許多文章,並一直在進行試驗。MySQL準備好的語句 - 控制執行的條件語句

我希望確認/澄清我的理解是正確的,並且我正朝着正確的方向前進 - 特別是我想知道我是否可以包含帶有準備的執行以及如何在準備中包含條件語句。

我想知道我是否應該使條件語句成爲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; 
     "; 

回答

0

爲了提高查詢的響應時間,一個要分析EXPLAIN query語句的輸出,並採取行動以elimitane filesorts和臨時表的使用,以及減少檢查的行數。
不幸的是,準備好的陳述可以幫助解決這些問題。