一時テーブルについて学習したばかりですが、それらを使用することで、いくつかの大きなクエリで非常に高速になりました。
私が抱えている問題は、テーブルを作成するときに、それを使用する次のクエリの全長にわたって、またはスクリプトが終了するまで、テーブルが持続しないことです。
私はそれを使用して作成しています:
$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キーワードやドロップなどを使用せずにこれを機能させるにはどうすればよいですか?
次のクエリは、1つの大きなクエリです。同じオブジェクトでPrepareが呼び出されるので、新しい接続が発生する可能性がありますか?大きなクエリの先頭にcreatetable構文を配置し、;で終了すると機能しますか?