当您要执行一个相当复杂的SELECT,然后对该表执行一堆查询时,临时表通常很有价值。
您可以执行以下操作:
CREATE TEMPORARY TABLE myTopCustomers
SELECT customers.*,count(*) num from customers join purchases using(customerID)
join items using(itemID) GROUP BY customers.ID HAVING num > 10;
然后针对myTopCustomers进行一堆查询,而不必对每个查询进行购买和商品的联接。然后,当您的应用程序不再需要数据库句柄时,就不需要进行清理。
几乎总是会看到用于派生表的临时表创建起来很昂贵。