MySQL 一時テーブルの簡単な使用法

MySQL 一時テーブルの簡単な使用法

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 ステートメントを発行すると、システムは一時テーブル データを自動的にクリアしません。

以下もご興味があるかもしれません:
  • Mysql の一時テーブルとパーティションテーブルの違いの詳細な説明
  • Mysql一時テーブルの原理と作成方法の分析
  • mysql 一時テーブルの使用状況の分析 [クエリ結果は一時テーブルに保存できます]
  • MySQL 5.7 の一時テーブルスペースを使用して落とし穴を回避する方法
  • MySQL FAQ シリーズ: 一時テーブルを使用する場合
  • JDBC および MySQL 一時テーブルスペースの詳細な分析
  • MySQL における単一テーブルと複数テーブル、およびビューと一時テーブルに対する Update と Select の違い
  • MySQL の 2 種類の一時テーブルの使用方法の詳細な説明
  • MySQL の一時テーブルと派生テーブルについての簡単な説明
  • MySQL の一時テーブルの基本作成と使用のチュートリアル
  • MySQL の一時テーブルの基本的な使用方法
  • 一時テーブルを使用して MySQL クエリを高速化する方法
  • MySQL での一時テーブルの使用例

<<:  Vue Element フロントエンドアプリケーション開発 テーブルリスト表示

>>:  LinuxにNginxをインストールする正しい手順

推薦する

MySQL全文検索の使用例

目次1. 環境整備2. データの準備3. ショーを始める4. 単語分割エンジン要約する参考文献1. ...

フロントエンドフレームワーク Vue における親子コンポーネントデータの双方向バインディングの実装

目次1. 親コンポーネントと子コンポーネント間の一方向の値転送1. 親から子への値の受け渡し2. 子...

Javascript Bootstrapのグリッドシステム、ナビゲーションバー、カルーセルの詳細な説明

目次ブートストラップと関連コンテンツの紹介グリッドシステムネストされた列列オフセット列の並べ替えナビ...

マークアップ言語 - Web アプリケーション CSS スタイル

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

nginxフロー制御とアクセス制御の実装

nginx トラフィック制御レート制限は非常に便利ですが、Nginx では誤解され、誤って設定される...

Ubuntu mysqlログイン名とパスワードを表示および変更し、phpmyadminをインストールする

MySQLをインストールした後、ターミナルでmysql -u root -pと入力してEnterを押...

CentOS IP接続ネットワーク実装プロセス図

1. システムにログインし、ディレクトリに入ります: cd /etc/sysconfig/netwo...

CSSを使用してAndroidシステムの読み込みアニメーションを実装する

Web には一般的な読み込みアイコンが 2 つあります。1 つは iOS の「菊」、もう 1 つは ...

Vue 仮想 Dom から実際の Dom への変換

別のツリー構造があるJavascriptオブジェクトでは、このツリーが本物であると伝えるだけでよいD...

HTML2 キャンバス SVG が認識されない場合の解決策

ウェブページを画像としてキャプチャする新機能があったので、人気のhtml2canvasを使ってみまし...

1行のコードでLinuxのプロセスを隠す方法を学ぶ

友人たちはいつも、Linux のプロセスを隠す方法を私に尋ねます。私は、どの程度隠したいのか、カーネ...

JavaScript Domはカルーセルの原理と例を実装します

カルーセルを作りたい場合、まずその原理を理解する必要があります。画像を右から左にスライドさせるにはど...

MySQL マスタースレーブスイッチチャネルの問題の解決策

VIP を設定した後、アクティブ/スタンバイの切り替え中に表示されるエラー メッセージは次のとおりで...

Docker5フル機能の港湾倉庫構築プロセス

Harbor は、Docker イメージを保存および配布するためのエンタープライズ レベルのレジスト...

MySQLインスタンスクラッシュ事例の詳細な分析

[問題の説明]私たちの実稼働環境には、複数の MySQL サーバー (MySQL 5.6.21) の...