タグ付けされた質問 「cross-apply」

13
内部結合でクロス適用を使用する必要があるのはいつですか?
CROSS APPLYを使用する主な目的は何ですか? 私は(漠然と、インターネット上の投稿を通じて)、cross applyパーティション分割している場合に大規模なデータセットを選択する場合により効率的な方法を読んだことがあります。(ページングが頭に浮かぶ) またCROSS APPLY、右のテーブルとしてUDFを必要としないことも知っています。 ほとんどのINNER JOINクエリ(1対多の関係)では、を使用するように書き換えることができましたCROSS APPLYが、常に同等の実行プランが提供されます。 誰もが私がうまくいくような場合にCROSS APPLY違いが出るときの良い例を私に教えてもらえINNER JOINますか? 編集: 以下は、実行プランがまったく同じである簡単な例です。(それらが異なり、どこcross applyがより速く/より効率的かを示してください) create table Company ( companyId int identity(1,1) , companyName varchar(100) , zipcode varchar(10) , constraint PK_Company primary key (companyId) ) GO create table Person ( personId int identity(1,1) , personName varchar(100) , companyId int , …

1
CROSS APPLYがこのクエリで無効な列エラーを取得しないのはなぜですか?
一部のDMVをクエリするためのコードを書いています。SQLのバージョンによっては、一部の列がDMVに存在する場合と存在しない場合があります。を使用して特定のチェックをスキップする方法をオンラインで興味深い提案が見つかりましたCROSS APPLY。 以下のクエリは、欠落している可能性のある列のDMVを読み取るコードの例です。コードは列のデフォルト値を作成CROSS APPLYし、DMVから実際の列が存在する場合はそれを抽出するために使用します。 コードが抽出しようとする列BogusColumnは存在しません。以下のクエリでは無効な列名に関するエラーが生成されると思いますが、そうではありません。エラーなしでNULLを返します。 下のCROSS APPLY句が「無効な列名」エラーにならないのはなぜですか? declare @x int select @x = b.BogusColumn from ( select cast(null as int) as BogusColumn ) a cross apply ( select BogusColumn from sys.dm_exec_sessions ) b; select @x; CROSS APPLY別にクエリを実行する場合: select BogusColumn from sys.dm_exec_sessions; 無効な列名について予期されるエラーが発生します。 Msg 207, Level 16, State 1, Line 9 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.