複数のプロセスおよび接続からアクセスできる独自の疑似テンポラリテーブルを作成できます。
メモリテーブルの作成、操作の実行、および後でのクリーンアップが考えられます。
次のSQLを使用してメモリテーブルを作成できます。
CREATE TABLE mydb.temp_32rfd293 (
id int(11) auto_increment,
content varchar(50),
PRIMARY KEY (`id`)
) ENGINE=MEMORY;
使用して、それをドロップし、有益な何かをします。あなたは時折放棄された一時テーブルをクリーンアップしたいと思う
、あなたがするのmysqlにスケジュールされたイベントを作成することができます1日より古いmydb.temp_%のテーブルを削除するには、イベントを予定
DROP TABLE temp_32rfd293:
この。これを行う場合は、偶発的な削除を防ぐために、一時表用の専用スキーマを使用することを検討してください。
注:これが機能するには、my.iniにevent_scheduler=ON
が必要です。
DELIMITER $$
CREATE
EVENT `cleanup_custom_temps`
ON SCHEDULE EVERY 1 DAY STARTS '2000-01-01 01:00:00'
DO BEGIN
---------------------------------------------------
-- Process to delete all tables with
-- prefix 'temp_', and older than 1 day
SET @tbls = (
SELECT GROUP_CONCAT(TABLE_NAME)
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mydb'
AND TABLE_NAME LIKE 'temp_%'
AND CREATE_TIME < NOW() - INTERVAL 1 DAY
);
SET @delStmt = CONCAT('DROP TABLE ', @tbls);
PREPARE stmt FROM @delStmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
---------------------------------------------------
END */$$
DELIMITER ;
一時テーブルの場合でもですか? Golangで一時テーブルを使用する方法はありませんか? – william
文書によれば、一時テーブルを作成しても暗黙的なコミット(https://dev.mysql.com/doc/refman/5.6/en/implicit-commit.html)は行われませんが、インデックスを追加する方法はありませんそれはそうです。 – william
MySQLの一時テーブルは、現在の接続でのみ表示されます。接続が終了すると、接続は切断されます。一時テーブルを使用している場合は、ビジネスをしている間にその接続を保持する必要があります。 – Code4aliving