mysql で一時テーブルを使用する場合: 1. UNION クエリで TEMPTABLE アルゴリズムまたはビューを使用する場合; 2. DISTINCT クエリを使用し、ORDER BY を追加する場合; 3. SQL で "SQL_SMALL_RESULT" を使用する場合オプション; 4. FROMなどでサブクエリを使用する場合
このチュートリアルの動作環境: Windows10 システム、mysql8.0.22 バージョン、Dell G3 コンピューター。
MySQL は次の状況で一時テーブルを作成します:
1. UNION クエリ;
2. TEMPTABLE アルゴリズムまたは UNION クエリのビューを使用する;
3. ORDER BY と GROUP BY の句が異なる場合;
4. テーブル接続では、ORDER BY の列がドライバー テーブルにありません;
5. DISTINCT をクエリして ORDER BY を追加する場合;
6. SQL_SMALL_RESULT オプションが SQL で使用される場合;
7 . Subquery in FROM;
8, subquery or table created while semi-join;
EXPLAIN 実行計画結果の Extra 列を確認し、Using Temporary が含まれていれば、一時テーブル。
もちろん、一時テーブルに保存する必要があるデータの量が上限 (tmp-table-size または max-heap-table-size のどちらか大きい方) を超える場合は、ディスクベースの一時テーブルを生成します。
次の状況では、ディスク一時テーブルが作成されます:
1. データ テーブルには BLOB/TEXT 列が含まれます;
2. GROUP BY または DSTINCT の列に、512 文字を超える文字型の列 (または 5.6.15 より前では 512 バイトを超えるバイナリ型の列、512 バイトを超えるかどうかのみ) があります;
3. SELECT では、 UNION、UNION ALL クエリ、最大長が 512 を超える列があります (文字列型の場合は 512 文字、バイナリ型の場合は 512 バイト);
4. SHOW COLUMNS/FIELDS および DESCRIBE を実行します。実行結果にはBLOB列型が使用されます。
5.7.5 以降、ディスク一時テーブルのエンジン タイプを InnoDB として定義できる新しいシステム オプション external_tmp_disk_storage_engine が追加されました。これより前は、MyISAM のみが使用可能でした。 5.6.3 以降に追加された新しいシステム オプションdefault_tmp_storage_engine は、CREATE TEMPORARY TABLE によって作成される一時テーブルのエンジン タイプを制御します。以前は、デフォルトは MEMORY でした。この 2 つを混同しないでください。
次の例を参照してください:
推奨学習: mysql ビデオ チュートリアル
以上がmysql で一時テーブルを使用する場合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。