【发布时间】:2012-06-26 09:37:49
【问题描述】:
我刚刚了解了临时表,并且使用它们在我的一些大型查询中给了我一些非常好的速度提升。
我遇到的问题是,当我创建表时,它不会持续使用它的以下查询的完整长度,也不会持续到脚本结束。
我正在使用:
$dbh->exec("CREATE TEMPORARY TABLE _temp_unique_invoice_ref ENGINE = MEMORY AS
(SELECT jobRef, invoiceRef FROM invoices_out_reference GROUP BY invoiceRef)") ;
它之后的查询有几百行长,并在子查询中多次尝试使用临时表,但它仅适用于第一个子查询,其余查询失败,表示该表不存在。
由于此查询可能由许多用户每 10 秒运行一次,因此该场景也更加复杂,因此它可能会在 10 秒过去之前执行多次。
如何在不使用 TEMPORARY 关键字和 drop 等的情况下完成这项工作?
接下来的查询只是一个大查询。准备在同一个对象上调用,这会导致新的连接吗?如果我将创建表语法放在较大查询的开头并用 ; 终止它会起作用吗?
【问题讨论】:
-
你为什么不去创建表(不是临时的),一旦你的工作完成删除那个表?
标签: mysql temp-tables