MySQL 一時テーブルは、一時的なデータを保存する必要がある場合に非常に便利です。一時テーブルは現在の接続でのみ表示されます。接続が閉じられると、MySQL は自動的にテーブルを削除し、すべてのスペースを解放します。 一時テーブルは MySQL バージョン 3.23 で追加されました。MySQL バージョンが 3.23 より前の場合、MySQL 一時テーブルは使用できません。しかし、今日では、このような低いバージョンの MySQL データベース サービスを使用している人はほとんどいません。 MySQL 一時テーブルは現在の接続にのみ表示されます。PHP スクリプトを使用して MySQL 一時テーブルを作成すると、PHP スクリプトが実行されるたびに一時テーブルは自動的に破棄されます。 他の MySQL クライアント プログラムを使用して MySQL データベース サーバーに接続し、一時テーブルを作成すると、クライアント プログラムを閉じたときにのみ一時テーブルが破棄されます。 もちろん、手動で破棄することもできます。 例 以下は、MySQL 一時テーブルを使用する簡単な例を示しています。次の SQL コードは、PHP スクリプトの mysql_query() 関数に適用できます。 mysql> 一時テーブル SalesSummary を作成します ( -> product_name VARCHAR(50) NOT NULL -> 、total_sales DECIMAL(12,2) NOT NULL デフォルト 0.00 -> 、平均単価 DECIMAL(7,2) NOT NULL デフォルト 0.00 -> 、total_units_sold INT UNSIGNED NOT NULL デフォルト 0 ); クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> SalesSummaryにINSERT -> (商品名、総売上、平均単価、総販売数) -> 価値観 -> ('キュウリ', 100.25, 90, 2); mysql> SalesSummary から * を選択; +--------------+-------------+----------------+------------------+ | 商品名 | 総売上 | 平均単価 | 総販売数 | +--------------+-------------+----------------+------------------+ | キュウリ | 100.25 | 90.00 | 2 | +--------------+-------------+----------------+------------------+ セット内の 1 行 (0.00 秒) SHOW TABLES コマンドを使用してテーブルのリストを表示すると、SalesSummary テーブルは表示されません。 現在の MySQL セッションを終了し、SELECT コマンドを使用して元々作成された一時テーブル データを読み取ると、終了時に一時テーブルが破棄されているため、データベースにテーブルが存在しないことがわかります。 MySQL 一時テーブルの削除 デフォルトでは、データベースから切断すると一時テーブルは自動的に破棄されます。もちろん、現在の MySQL セッションで DROP TABLE コマンドを使用して、一時テーブルを手動で削除することもできます。 以下は、一時テーブルを手動で削除する例です。 mysql> 一時テーブル SalesSummary を作成します ( -> product_name VARCHAR(50) NOT NULL -> 、total_sales DECIMAL(12,2) NOT NULL デフォルト 0.00 -> 、平均単価 DECIMAL(7,2) NOT NULL デフォルト 0.00 -> 、total_units_sold INT UNSIGNED NOT NULL デフォルト 0 ); クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> SalesSummaryにINSERT -> (商品名、総売上、平均単価、総販売数) -> 価値観 -> ('キュウリ', 100.25, 90, 2); mysql> SalesSummary から * を選択; +--------------+-------------+----------------+------------------+ | 商品名 | 総売上 | 平均単価 | 総販売数 | +--------------+-------------+----------------+------------------+ | キュウリ | 100.25 | 90.00 | 2 | +--------------+-------------+----------------+------------------+ セット内の 1 行 (0.00 秒) mysql> SalesSummary テーブルを削除します。 mysql> SalesSummary から * を選択; エラー 1146: テーブル 'RUNOOB.SalesSummary' が存在しません クエリを使用して一時テーブルを直接作成する方法: CREATE TEMPORARY TABLE 一時テーブル名 AS ( SELECT * FROM 古いテーブル名 LIMIT 0,10000 ); 追加の非常に大きなテーブルで作業する場合、大量のデータの小さなサブセットを取得するために、多数のクエリを実行する必要がある場合があります。テーブル全体に対してこれらのクエリを実行するのではなく、MySQL で一度にいくつかの必要なレコードを検索し、そのレコードを一時テーブルに選択して、それらのテーブルに対してクエリを実行する方が高速な場合があります。 一時テーブルの作成は簡単です。通常の CREATE TABLE ステートメントに TEMPORARY キーワードを追加します。 一時テーブル tmp_table を作成します ( 名前 VARCHAR(10) NOT NULL, 値 INTEGER NOT NULL ) 一時テーブルは、MySQL への接続期間中存在します。切断すると、MySQL は自動的にテーブルを削除し、使用されていたスペースを解放します。もちろん、接続したままテーブルを落としてスペースを空けることもできます。 tmp_tableテーブルを削除する tmp_table という名前の一時テーブルを作成するときに、データベース内に tmp_table という名前のテーブルがすでに存在する場合、一時テーブルは必然的に非一時テーブル tmp_table をマスク (非表示) します。 一時テーブルを HEAP テーブルとして宣言する場合、MySQL では、メモリ内に作成するように指定することもできます。 一時テーブル tmp_table を作成します ( 名前 VARCHAR(10) NOT NULL, 値 INTEGER NOT NULL ) タイプ = ヒープ HEAP テーブルはメモリに格納されるため、HEAP テーブルに対して実行するクエリは、ディスク上の一時テーブルに対して実行するクエリよりも高速になる可能性があります。ただし、HEAP テーブルは通常のテーブルとは多少異なり、独自の制限があります。詳細については、MySQL リファレンス マニュアルを参照してください。 前述のように、一時テーブルをテストして、大規模なデータベースに対してクエリを実行するよりも実際に高速かどうかを確認する必要があります。データが適切にインデックスされている場合、一時テーブルはまったく高速化されない可能性があります。 1. 一時テーブルが MySQL から切断されると、システムは一時テーブル内のデータを自動的に削除しますが、これは次のステートメントによって作成されたテーブルに限定されます。 一時テーブル tmp_table を作成します ( 名前 VARCHAR(10) NOT NULL, 値 INTEGER NOT NULL ) 2) クエリ結果を一時テーブルに直接インポートする 一時テーブル tmp_table を作成します。SELECT * FROM table_name 2. さらに、MySQL ではメモリ内に直接一時テーブルを作成することもできます。メモリ内にあるため、速度が非常に速くなります。構文は次のとおりです。 一時テーブル tmp_table を作成します ( 名前 VARCHAR(10) NOT NULL, 値 INTEGER NOT NULL ) タイプ = ヒープ 3. 上記の分析から、一時テーブルのデータがクリアされることがわかります。切断すると自動的にクリアされます。ただし、SQL ステートメントを発行するたびにプログラムがデータベースに接続することは不可能です (この場合、心配している問題が発生します。そうでない場合は問題はありません)。データベース接続が切断された場合にのみデータがクリアされるためです。データベース接続で複数の SQL ステートメントを発行すると、システムは一時テーブル データを自動的にクリアしません。 以下もご興味があるかもしれません:
|
<<: Vue Element フロントエンドアプリケーション開発 テーブルリスト表示
まずサンプルコードを見てみましょう: #/bin/bash cal 日付 -u echo "...
以下の記事を読んだ後、プロジェクトをサーバーにデプロイできます。Tomcat、JDK、MySQL な...
圧縮版の記事ではデータの初期化がされていないなどいくつか問題があったため、Windows にインスト...
forループfor ループは配列の要素をループします。文法: for (初期化変数; 条件式; 繰り...
Web プロジェクトがどんどん大きくなると、CSS は天文学的な大きさと複雑さを増します。この問題を...
テーブル構造を設計する場合、数値型は最も一般的な型の 1 つですが、数値型をうまく使用するのは想像す...
導入Kubernetes を使い始めるのに丸一日を費やしたことはありませんか?最近登場したいくつかの...
目次質問: ボタンをクリックすると、スパンの色が赤に変わりますか?上記の問題を分析します。 2番目の...
目次01 CM 02 エントリーポイント03 ワークディレクトリ04 環境05 ユーザー06巻07 ...
選択ステートメントの完全な構文は次のとおりです。 選択 DISTINCT <選択リスト>...
MySQL 5.7.19 winx64 解凍版のインストールチュートリアルを収録しています。具体的な...
mysql5.7.21 zipの詳細なインストール手順は次のとおりです。 1. 解凍して指定されたデ...
良い画像素材のウェブサイトを見つけるのは難しいです。特に無料です。良い写真には非常に目を引く視覚効果...
新年の初めに、友人の健康と2013年が素晴らしい年となることを心からお祈りいたします。この記事では、...
目次概要ジェネリック医薬品とはビルドシステムジェネリック医薬品の一般的な理解ジェネリッククラスジェネ...