mysqlテンポラリ・テーブルの作成

1173 ワード

レポートを生成する際、使用するクエリー条件ではin関数が多く、いくつかのテーブルが関連付けられているため、クエリーの速度が遅く、データベース全体が死ぬこともある.orを使うと早くできると思っていたのですが、やはり同じです.inを使って2つの文字列に使ったので、仕方がありません.長い間考えていましたが、よくやってみましたが、やはりだめです.やっと、仮表を使うことを考えました.これと同じように、元の条件で読み出したデータを変える必要はありません.私は元のデータを仮表に置くだけで、仮表にinを使う条件を2つ加えるだけでいいです.スピードがずいぶん速くなりました.はあ~楽しかったです.今この知識をメモしておきます...
1、テンポラリ・テーブルがmysqlから切断されると、テンポラリ・テーブルのデータは自動的に削除されますが、これは次の文で作成されたテーブル:A.定義フィールド(注意:mssqlとは異なり、テーブル名に#または@を付けます.ここではtemporaryを付けます.)
 create temporary table tmp_table ( 

      idno int not null,
      name varchar(10) not null
  )


B.クエリーの結果を直接テンポラリ・テーブルにインポートできます(この方法は役に立つと思います.特にマルチテーブル関連では、クエリーしたものをテンポラリ・テーブルに直接置いてから読み取ることができます)
create temporary table tmp_table select * from table_name 

2、またmysqlでは、メモリ内のすべての速度が速いため、メモリ内でテンポラリ・テーブルを直接作成できます.構文は次のとおりです.
create temporary table tmp_table ( 

     idno int not null,
     name varchar(10) not null

  ) TYPE = HEAP 



注意:データベース接続を切断してこそデータが空になります.1つのデータベース接続で何度もsqlを発行すると、システムは一時テーブルデータを自動的に空にすることはありません.