2013-01-16 105 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和临时表的使用,以及减少检查的行数。
不幸的是,准备好的陈述可以帮助解决这些问题。