FetchXml を使用してパフォーマンスを最適化する
この記事では、FetchXml を使用してデータを取得する際のパフォーマンスを最適化する方法について説明します。
遅いマテリアライズ クエリ
多数の検索列と計算列を選択し、パフォーマンスの問題が発生する場合は、fetch要素 ブール値 latematerialize
属性を設定してみてください。 この設定は舞台裏でクエリを小さな部分に分割し、結果を返す前に再組み立てします。
latematerialize
属性を使用することで、必ずしもパフォーマンスが向上するとは限りません。 単純なクエリの実行が遅くなる可能性があります。 次のようなクエリの場合に最も有益です:
- 結合が多い
- 多くの列ルックアップ列または計算列が含まれています
クエリのヒント
重要
これらのオプションは、Microsoft テクニカル サポートによって推奨された場合にのみ適用してください。 これらのオプションを誤って使用すると、クエリのパフォーマンスが損なわれる可能性があります。
Microsoft SQL Server はクエリを最適化するための多くのクエリ ヒントをサポートします。 FetchXML クエリ ヒントをサポートし、 fetch要素 options 属性を使用してこれらのクエリ オプションをSQL Serverに渡すことができます。
Query option | SQL Server hint |
---|---|
OptimizeForUnknown |
Optimize for unknown |
ForceOrder |
Force Order |
DisableRowGoal |
Hint: DISABLE_OPTIMIZER_ROWGOAL |
EnableOptimizerHotfixes |
Hint: ENABLE_QUERY_OPTIMIZER_HOTFIXES |
LoopJoin |
Loop Join |
MergeJoin |
Merge Join |
HashJoin |
Hash Join |
NO_PERFORMANCE_SPOOL |
NO_PERFORMANCE_SPOOL |
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS |
Hint: ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS |
More information: Hints (Transact-SQL) - Query
ノー ロック
以前のバージョンでは、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 サンプル コード
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示