MySQL の一時テーブルと派生テーブルについての簡単な説明

MySQL の一時テーブルと派生テーブルについての簡単な説明

派生テーブルについて

メイン クエリに派生テーブルが含まれている場合、または SELECT ステートメントに UNION 句が含まれている場合、または SELECT ステートメントにフィールドの ORDER BY 句 (別のフィールドの GROUP BY 句) が含まれている場合、クエリを完了するために、MySQL は一時的な結果セットを格納するための一時テーブルを自動的に作成する必要があります。この一時テーブルは MySQL 自体によって作成および管理され、自動的に作成された一時テーブルと呼ばれます。自動的に作成された一時テーブルの場合、メモリ一時テーブルのパフォーマンスの方が優れているため、MySQL は常にメモリ一時テーブルを最初に使用します。メモリ一時テーブルが大きくなりすぎて一定のしきい値に達すると、メモリ一時テーブルは外部メモリ一時テーブルに変換されます。つまり、外部メモリ一時テーブルは、ストレージスペースの観点からメモリ一時テーブルの拡張です。メモリ内の一時テーブルを外部メモリ内の一時テーブルに変換するためのしきい値は、システム変数 max_heap_table_size と tmp_table_size の小さい方の値によって決まります。

派生テーブルは通常、from 句で使用されます。のように:

select * from (select * from table) as t;

一時テーブルについて

非常に大きなテーブルで作業する場合、大量のデータの小さなサブセットを取得するために、多数のクエリを実行する必要がある場合があります。テーブル全体に対してこれらのクエリを実行するのではなく、MySQL で一度にいくつかの必要なレコードを検索し、そのレコードを一時テーブルに選択して、それらのテーブルに対してクエリを実行する方が高速な場合があります。

一時テーブルの作成は簡単です。通常の CREATE TABLE ステートメントに TEMPORARY キーワードを追加するだけです。

一時テーブル tmp_table を作成します (

名前 VARCHAR(10) NOT NULL,

値 INTEGER NOT NULL

)

一時テーブルは、MySQL への接続期間中存在します。切断すると、MySQL は自動的にテーブルを削除し、使用されていたスペースを解放します。もちろん、接続したままテーブルを落としてスペースを空けることもできます。

DROP TABLE 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) クエリ結果を一時テーブルに直接インポートする

CREATE TEMPORARY TABLE 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 一時テーブルの簡単な使用法
  • MySQL における単一テーブルと複数テーブル、およびビューと一時テーブルに対する Update と Select の違い
  • MySQL の 2 種類の一時テーブルの使用方法の詳細な説明
  • MySQL の一時テーブルの基本作成と使用のチュートリアル
  • MySQL の一時テーブルの基本的な使用方法
  • 一時テーブルを使用して MySQL クエリを高速化する方法
  • MySQL での一時テーブルの使用例

<<:  Nodeはリクエスト追跡にasync_hooksモジュールを使用します

>>:  MySQLの基礎知識学習ノート

推薦する

jQueryは、マウスをドラッグしてdivの位置とサイズを変更する方法を実装しています。

Windows フォームと同様の効果を得るには、中央をドラッグして div の位置を変更し、端をド...

MySQLデータベースのスケジュールバックアップを実装する方法

1. シェルスクリプトを作成する vim バックアップdb.sh 次のようにスクリプトを作成します。...

Linux の一般的な基本コマンドと使用方法

この記事では、一般的な基本的な Linux コマンドとその使用方法を例を使って説明します。ご参考まで...

Linux sftp コマンドの使用法の概要

sftp は、安全なファイル転送プロトコルである Secure File Transfer Prot...

HTML/CSS におけるフロートの使用例の詳細

1. floatの基本的な使用例1. まず 2 つの div ボックスを作成し、高さ、幅、背景色を設...

MySQL クエリ ステートメントのプロセスと EXPLAIN ステートメントの基本概念とその最適化

ウェブサイトやサービスのパフォーマンスは、データベースの設計(適切な言語開発フレームワークを選択した...

docker+gitlab+gitlab-runnerの詳細なデプロイメント

環境サーバー: centos7クライアント: ウィンドウCentos7 に docker+gitla...

CSS3は水平方向の中央揃え、垂直方向の中央揃え、水平方向と垂直方向の中央揃えのサンプルコードを実装しています。

フロントエンドの担当者であれば、面接でも仕事中でも、「CSS を使用して中央揃えにする」という効果に...

Vite と Vue CLI の長所と短所

Vue エコシステムには Vite と呼ばれる新しいビルド ツールがあり、Vue CLI よりも 1...

開発者がデータベースロックを詳細に理解する必要がある理由

1.ロックしますか? 1.1 ロックとは何ですか?ロックの本当の意味は、鍵またはコードで開くことがで...

Centos7 ベースの Nginx Web サイト サーバーの構築の詳細説明 (仮想 Web ホストの構成を含む)

1. Nginx サービス基盤Nginx (エンジン x) は、パフォーマンスの最適化のために特別...

IDEA が MySQL ポート番号占有に接続できない問題の解決方法

コマンドラインでMYSQLに正常にログインでき、NavicatもMySQLに正常に接続できますが、I...

MySQL ストアド プロシージャと共通関数のコード分析

mysql ストアド プロシージャの概念:特定のタスク (クエリと更新) を実行できる、データベース...

練習と面接のための Linux シェル スクリプトのヒント 9 つを共有する

予防1) 先頭にインタープリターを追加します: #!/bin/bash 2) 構文のインデントに 4...