数日前に、SQL Serverプロファイラを置き換える拡張イベントを試しました。 次に、sqlを使用してSQL Serverデータベースで生成されたxelファイルを配置したかったのです。XMLで値を取得するには、クロス・アプライを使用するのはなぜですか?
クロスオーケートで関数ノードを使用するサイトが多いため、XMLを使用しないよりも遅い場合でもXMLの値を取得できます。 何か不足しているかどうか分かりませんか?私のクエリの
数日前に、SQL Serverプロファイラを置き換える拡張イベントを試しました。 次に、sqlを使用してSQL Serverデータベースで生成されたxelファイルを配置したかったのです。XMLで値を取得するには、クロス・アプライを使用するのはなぜですか?
クロスオーケートで関数ノードを使用するサイトが多いため、XMLを使用しないよりも遅い場合でもXMLの値を取得できます。 何か不足しているかどうか分かりませんか?私のクエリの
:あなたはチェーンソーでパンを切ることができるか、結果があっても(説得されていない場合は、いくつかの裸線を使用する場合がありますが、ツールを責めることはありませんそれは
...)非常に高速:-Dだあなた必要.nodes()
派生テーブルとしてそれらを取得するために1:n
関連のサブノードがある場合。 XPath
が成長するとき
多くの人が
あなたがから名付けられ現在のノードを取得...いくつかの大きさに、特に非常に深くネストされた要素を、単にコードにもう少し読みやすさを得るために.nodes()
を使用しますXPath navigation
またはXQuery
に進むことができます。複数のネストされたXMLを使用すると、.nodes()
のカスケードを使用して深く深く潜んで実行できます。
あなたは値NTCanonicalUserName
を持つ属性@Name
.nodes()
ための必要はありませんで名前<data>
で一つだけの要素<event>
以下が存在することを確認してくださいすることができます。 Assumeably最速は
/event[1]/data[@name="NTCanonicalUserName"][1]/value[1]/text()[1]
重要のようなものを使用することです!
与えられた属性を持つ<event>
または複数の<data>
が存在する可能性がある場合、「高速」コールは見つかったときに最初の出現を返します。これは、そこに意志エンジンが知っているので、
あなたの「速い」コールは、事前で、速いです...あなたは別のものがあることを、を見つけることはない間違ったものも...そしてかもしれません正確に1つの結果になります。 .nodes()
を使用すると、eningeはさらに発生する必要があり、派生テーブルの構造を作成するためのオーバーヘッドを行います。グッド
一般的には、あなたが何か、エンジンが知ることはできませんが、より速く読みになるだろうを知っていれば、あなたはエンジンを助けるべき
に助言...
内部本当のを
を知っています/ネイティブXMLデータ型は、表示される文字列表現としてではなく、階層構造のツリーとして格納されます。 XMLを扱うことは驚くほど速いです...あなたの場合、検索はツリーから目的の要素に直接ジャンプしています。
ありがとうございます。 :) – MoonLightFlower