ホームページ >データベース >mysql チュートリアル >mysqlでのwith asの使用法は何ですか

mysqlでのwith asの使用法は何ですか

WBOY
WBOYオリジナル
2022-01-05 10:31:1421585ブラウズ

mysql では、「with as」はサブクエリとも呼ばれ、SQL フラグメントを定義するために使用され、そのフラグメントは SQL ステートメント全体で何度も繰り返し使用されます。この SQL フラグメントは、パブリック一時テーブル。構文は「with tmp as (クエリ文)」です。

mysqlでのwith asの使用法は何ですか

このチュートリアルの動作環境: Windows10 システム、mysql8.0.22 バージョン、Dell G3 コンピューター。

mysql での with as の使用法は何ですか。

WITH AS 句はサブクエリ ファクタリングとも呼ばれ、SQL フラグメント、つまりこの SQL を定義できます。フラグメントは SQL ステートメント全体で使用されます。 SQL ステートメントを読みやすくしたり、UNION ALL のさまざまな部分にデータを提供する部分として使用したりできます。

UNION ALL の場合、WITH AS を使用して UNION ALL ステートメントを定義します。フラグメントが 2 回以上呼び出される場合、オプティマイザは WITH AS 句によって取得されたデータを一時テーブルに自動的に配置します。プロンプト「meterize」は、WITH AS 句のデータをグローバル一時テーブルに強制的に入れます。この方法で多くのクエリを高速化できます。

with as サブクエリは 1 回だけ実行されるため、クエリのパフォーマンスを向上させるために結果がユーザーの一時テーブルに保存されるため、複雑なレポート統計、ページング クエリ、クエリなどの複数の参照シナリオに適しています。 sum、count、avgなどの結果を取得する必要があります。クエリ結果に対して2次処理を行うためのフィルタリング条件として使用されます。

特にユニオンオールに便利です。 Union all の各部分は同じである可能性がありますが、各部分が 1 回実行されるとコストが高すぎるためです。

共通構文

–エイリアスの場合

with tmp as (select * from tb_name)

–複数のエイリアスの場合

with
tmp as (select * from tb_name),
tmp2 as (select * from tb_name2),
tmp3 as (select * from tb_name3),
…

– e 一時テーブルの構築と同等

with e as (select * from scott.emp e where e.empno=7499)
select * from e;

– e および d 一時テーブルの構築と同等

with
e as (select * from scott.emp),
d as (select * from scott.dept)
select * from e, d where e.deptno = d.deptno;

実際には、これは単に大きなヒープによって繰り返し使用される SQL ステートメントは、as に配置され、後続のクエリで使用できるエイリアスが与えられます。これは、SQL ステートメントの大規模なバッチで最適化の役割を果たし、明確です。

推奨学習: mysql ビデオ チュートリアル

以上がmysqlでのwith asの使用法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。