FetchXml を使用してパフォーマンスを最適化する
ヒント
Dataverse クエリを作成する際に一般的に避けるべきことについての指針については、クエリのアンチ パターンを参照してください。 次のセクションは FetchXml に固有です。
遅いマテリアライズ クエリ
多数の検索列と計算列を選択し、パフォーマンスの問題が発生する場合は、fetch要素 ブール値 latematerialize
属性を設定してみてください。 この設定は舞台裏でクエリを小さな部分に分割し、結果を返す前に再組み立てします。
latematerialize
属性を使用することで、必ずしもパフォーマンスが向上するとは限りません。 単純なクエリの実行が遅くなる可能性があります。 次のようなクエリの場合に最も有益です:
- 結合が多い
- 多数の参照列または計算列を含む
クエリのヒント
重要
これらのオプションは、Microsoft テクニカル サポートによって推奨された場合にのみ適用してください。 これらのオプションを誤って使用すると、クエリのパフォーマンスが損なわれる可能性があります。
Microsoft SQL Server はクエリを最適化するための多くのクエリ ヒントをサポートします。 FetchXML はクエリ ヒントをサポートし、フェッチ要素オプション属性を使うことにより、SQL Server に渡すことができます。
クエリ オプション | SQL Server ヒント |
---|---|
ForceOrder |
強制注文 |
DisableRowGoal |
ヒント: DISABLE_OPTIMIZER_ROWGOAL |
EnableOptimizerHotfixes |
ヒント: ENABLE_QUERY_OPTIMIZER_HOTFIXES |
LoopJoin |
ループ結合 |
MergeJoin |
マージ結合 |
HashJoin |
ハッシュ結合 |
NO_PERFORMANCE_SPOOL |
NO_PERFORMANCE_SPOOL |
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS |
ヒント: ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS |
ノー ロック
以前のバージョンでは、no-lock
属性はレコードの共有ロックを防ぐために使用されていました。 この属性を含める必要はなくなりました。
ユニオンのヒント
異なるテーブルの列に対して条件を設定するフィルター要素を追加する場合、hint
属性を union
に設定することでパフォーマンスを向上させることができます。 ただし、いくつかの制限があります。
-
フィルター は
or
フィルター タイプを使用する必要があります。 - 各クエリには
union
ヒントを 1 つだけ含めることができます。 -
union
ヒントを持つフィルターがトップレベルのフィルターではない場合、 Dataverse クエリを変換し、union
ヒントを持つフィルタをルートフィルタに移動します。 -
union
ヒントの深さが 3 レベルを超える場合、ヒントは無視されます。
以下の例では、アカウント テーブルと コンタクト テーブルの両方で、telephone1
列に union
のヒントを持つフィルターを設定しています。
<fetch>
<entity name="email">
<attribute name="activityid" />
<attribute name="subject" />
<filter type="and">
<condition attribute="subject"
operator="like"
value="Alert:%" />
<condition attribute="statecode"
operator="eq"
value="0" />
<filter type="or"
hint="union">
<condition attribute="telephone1"
operator="eq"
value="555-123-4567"
entityname="ac" />
<condition attribute="telephone1"
operator="eq"
value="555-123-4567"
entityname="co" />
</filter>
</filter>
<link-entity name="account"
from="accountid"
to="regardingobjectid"
link-type="outer"
alias="ac" />
<link-entity name="contact"
from="contactid"
to="regardingobjectid"
link-type="outer"
alias="co" />
</entity>
</fetch>
参照
FetchXML を使用してデータのクエリを実行する
FetchXML を使用してデータを取得する
FetchXml を使用して列を選択する
FetchXml を使用してテーブルを結合する
FetchXml を使用して行を並び替える
FetchXml を使用して行をフィルターする
FetchXml を使用したページ結果
FetchXML を使用してデータを集計する
FetchXml を使用して行をカウントする
FetchXml リファレンス
FetchXml サンプル コード
アンチ パターンのクエリ