2013-09-22 25 views
0

我正在運行一個複雜的mysql查詢,大約需要10分鐘才能完成。我需要以不同的方式操作選擇集,以基於這些操作來生成不同的輸出文件爲多種輸出格式保存mysql結果

現在我必須多次運行相同的where子句,並根據所需的輸出對總體查詢進行輕微修改。這裏有一些僞代碼。

select * from table where SAME WHERE CLAUSE; 
select modification1(field3) from table where SAME WHERE CLAUSE; 
select modification3(field1) from table where SAME WHERE CLAUSE; 
select modification7(field1,field7) from table where SAME WHERE CLAUSE; 

有沒有一種方法,我可以節省內存中的查詢結果,所以我可以在多個輸出使用它,然後將其清除完成時?我正在尋找比多次運行相同WHERE子句更有效的方法。

回答

1

您可以使用:

CREATE TEMPORARY TABLE table2 AS (select * from table where WHERE CLAUSE); 
select modification1(field3) from table2; 
select modification3(field1) from table2; 
select modification7(field1,field7) from table2; 
DROP TEMPORARY TABLE table2; 

如果你確定你想要的結果將被保存在內存中,第一行可以是:

CREATE TEMPORARY TABLE table2 ENGINE=MEMORY 
    AS (select * from table where WHERE CLAUSE); 
+0

非常感謝你。 – sameold