一時テーブルを使用して複雑で高価なクエリを小さな断片に分割する多数の MySQL クエリがあります。
create temporary table product_stats (
product_id int
,count_vendors int
,count_categories int
,...
);
-- Populate initial values.
insert into product_stats(product_id) select product_id from product;
-- Incrementally collect stats info.
update product_stats ... join vendor ... set count_vendors = count(vendor_id);
update product_stats ... join category... set count_categories = count(category_id);
....
-- Consume the resulting temporary table.
select * from product_stats;
問題は、接続プールを使用しているため、 を閉じてもこれらのテーブルがクリアされないことjava.sql.Connection
です。
drop temporary table x;
必要なクエリを実行する前に、それらを手動で ( ) 1 つずつ削除できますが、これはミスが原因で発生する可能性があります。
java.sql.Connection.close()
データベース接続を閉じずに現在のセッション内で作成されたすべての一時テーブルをリセットする方法(JDBC/MySQL、API/構成) はありますか?接続プールを提供しますか?
編集:
MySQL バージョン 5.7.3 からのみ、「接続のリセット」機能の実装が開始されたようです。(リリースノート: https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-3.html ) ただし、バージョン 5.7 が残っているため、当面は使用しません。開発リリース。