我刚刚了解了临时表,并且使用它们在我的一些大查询中给了我一些非常好的速度提升。
我遇到的问题是,当我创建表时,它不会持续使用它的以下查询的完整长度,也不会持续到脚本结束。
我正在使用以下方法创建它:
$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 等的情况下完成这项工作?
下面的查询只是一个大查询。准备在同一个对象上调用,这会导致新的连接吗?如果我将创建表语法放在较大查询的开头并用 ; 终止它会起作用吗?