MySQLテンポラリ・テーブルのSqlコードの例


次の記事では、MySQLテンポラリ・テーブルの具体的な使用方法について説明します.非常に大きなテーブルで動作している場合、実際の操作では多くの関連クエリーを実行する必要がある可能性があります.大量のデータの小さなサブセットを取得するには、テーブル全体でこれらのクエリーを実行する必要はありません.
代わりに、MySQLが必要な少数のレコードを見つけるたびに、レコードを一時テーブルに選択すると、クエリーがより速く実行されます.
MySQLテンポラリ・テーブルの作成は簡単です.通常のCREATE TABLE文にTEMPORARYキーワードを追加します.
Sqlコード

  
  
  
  
  1. CREATE TEMPORARY TABLE tmp_table (   

  2. name VARCHAR(10) NOT NULL,   

  3. value INTEGER NOT NULL   

  4. )   

  5. CREATE TEMPORARY TABLE tmp_table (  

  6. name VARCHAR(10) NOT NULL,  

  7. value INTEGER NOT NULL  

  8. )  



テンポラリ・テーブルは、MySQLに接続している間に存在します.切断すると、MySQLはテーブルを自動的に削除し、使用するスペースを解放します.もちろん、まだ接続されている間にテーブルを削除してスペースを解放することができます.

  
  
  
  
  1. DROP TABLE tmp_table 



tmp_という名前を作成したらtableテンポラリテーブルの名前はtmp_tableのテーブルはデータベースにすでに存在し、MySQLテンポラリ・テーブルは非テンポラリ・テーブルtmp_をマスク(非表示)する必要があります.table.
テンポラリ・テーブルがHEAPテーブルであると宣言した場合、MySQLではメモリに作成するように指定できます.
Sqlコード

  
  
  
  
  1. CREATE TEMPORARY TABLE tmp_table (   

  2. name VARCHAR(10) NOT NULL,   

  3. value INTEGER NOT NULL   


  4. TYPE
     = 
    HEAP
       

  5. CREATE TEMPORARY TABLE tmp_table (  

  6. name VARCHAR(10) NOT NULL,  

  7. value INTEGER NOT NULL  


  8. TYPE
     = 
    HEAP
     



HEAPテーブルはメモリに格納されているため、ディスク上のテンポラリ・テーブルよりも速く実行される可能性があります.しかし、HEAPテーブルは一般的なテーブルとは若干異なり、独自の制限がある.詳しくはMySQLリファレンスマニュアルを参照してください.
前の提案のように、テンポラリ・テーブルをテストして、大量のデータベースに対するクエリーよりも速いかどうかを確認する必要があります.データがうまくインデックスされている場合は、テンポラリ・テーブルが少し速くない可能性があります.
1、テンポラリ・テーブルがMySQLから切断されると、自動的にMySQLテンポラリ・テーブルのデータが削除されますが、これは次の文で作成されたテーブルに限られます.
1)フィールドの定義

  
  
  
  
  1. CREATE TEMPORARY TABLE tmp_table (   

  2. name VARCHAR(10) NOT NULL,   

  3. value INTEGER NOT NULL   




2)クエリー結果をテンポラリ・テーブルに直接インポート
CREATE TEMPORARY TABLE tmp_table SELECT * FROM table_name
2、MySQLでは、メモリ内のすべての速度が速いため、メモリ内のテンポラリ・テーブルを直接作成できます.構文は次のとおりです.

  
  
  
  
  1. CREATE TEMPORARY TABLE tmp_table (   

  2. name VARCHAR(10) NOT NULL,   

  3. value INTEGER NOT NULL   


  4. TYPE
     = 
    HEAP
      



3、上の分析からMySQLテンポラリ・テーブルのデータはクリアされていることがわかります.接続を切ると自動的にクリアされますが、プログラムでsqlを発行するたびにデータベースに接続することはできません(そうであれば、心配している問題が発生します.そうでなければ問題ありません).データベースの接続を解除するだけでデータがクリアされるので、1つのデータベース接続で複数回sqlを発行すると、システムは一時テーブルデータを自動的に空にすることはありません.