mysqlテンポラリ・テーブルの作成
1173 ワード
レポートを生成する際、使用するクエリー条件ではin関数が多く、いくつかのテーブルが関連付けられているため、クエリーの速度が遅く、データベース全体が死ぬこともある.orを使うと早くできると思っていたのですが、やはり同じです.inを使って2つの文字列に使ったので、仕方がありません.長い間考えていましたが、よくやってみましたが、やはりだめです.やっと、仮表を使うことを考えました.これと同じように、元の条件で読み出したデータを変える必要はありません.私は元のデータを仮表に置くだけで、仮表にinを使う条件を2つ加えるだけでいいです.スピードがずいぶん速くなりました.はあ~楽しかったです.今この知識をメモしておきます...
1、テンポラリ・テーブルがmysqlから切断されると、テンポラリ・テーブルのデータは自動的に削除されますが、これは次の文で作成されたテーブル:A.定義フィールド(注意:mssqlとは異なり、テーブル名に#または@を付けます.ここではtemporaryを付けます.)
B.クエリーの結果を直接テンポラリ・テーブルにインポートできます(この方法は役に立つと思います.特にマルチテーブル関連では、クエリーしたものをテンポラリ・テーブルに直接置いてから読み取ることができます)
2、またmysqlでは、メモリ内のすべての速度が速いため、メモリ内でテンポラリ・テーブルを直接作成できます.構文は次のとおりです.
注意:データベース接続を切断してこそデータが空になります.1つのデータベース接続で何度もsqlを発行すると、システムは一時テーブルデータを自動的に空にすることはありません.
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を発行すると、システムは一時テーブルデータを自動的に空にすることはありません.