次の方法で共有


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

詳細: ヒント (Transact-SQL) - クエリ

ノー ロック

以前のバージョンでは、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 サンプル コード
アンチ パターンのクエリ