0

我正在运行一个复杂的 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 子句更有效的方法。

4

1 回答 1

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);
于 2013-09-22T19:01:41.227 回答