假如有这样一条语句:
select sum(A) as A,sum(B) as B,(sum(A)-sum(B)) as C from tablename;
当数据库执行到(sum(A)-sum(B)) as C时,系统会重新算一次sum(A)和sum(B)......我的意思是重新加一次,还是会直接用前面算过的sum(A)和sum(B);感觉如果人性化的话前一种做法比较好;另外,我想比较两个SQL语句的执行时间。
我执行一条语句之后,如果把这个语句再执行一次,第二次的执行时间比第一次要短,是因为第一次的结果已经放到缓存里面了,第二次没有真正查询数据库,只是从缓存里面拿以前的记录。
如果我每次都让它重新计算,不想让缓存里面有以前的记录,该如何做,也就是如何清除缓存啊?
望高手指教,谢谢~~。

解决方案 »

  1.   


    直接用前面算过的sum(A)和sum(B)
      

  2.   


    手册中语法说明中就有!SQL_NO_CACHE
    SELECT
        [ALL | DISTINCT | DISTINCTROW ]
          [HIGH_PRIORITY]
          [STRAIGHT_JOIN]
          [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
          [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
        select_expr [, select_expr ...]
        [FROM table_references
        [WHERE where_condition]
        [GROUP BY {col_name | expr | position}
          [ASC | DESC], ... [WITH ROLLUP]]
        [HAVING where_condition]
        [ORDER BY {col_name | expr | position}
          [ASC | DESC], ...]
        [LIMIT {[offset,] row_count | row_count OFFSET offset}]
        [PROCEDURE procedure_name(argument_list)]
        [INTO OUTFILE 'file_name' export_options
          | INTO DUMPFILE 'file_name'
          | INTO var_name [, var_name]]
        [FOR UPDATE | LOCK IN SHARE MODE]]