我正在运行一个复杂的mysql查询,大约需要10分钟才能完成。我需要以不同的方式操作选择集,以根据这些操作生成不同的输出文件。
现在我必须多次运行相同的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子句更有效的东西。
答案 0 :(得分: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);