この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

クエリのパフォーマンスに関するフィードバックを取得する (ベータ)

Salesforce でクエリ、レポート、またはリストビューがどのように実行されるかについてフィードバックを取得するには、explain パラメータを指定して Query リソースを使用します。Salesforce では、各クエリを分析して、クエリ結果を���得するための最適な手段が検索されます。クエリおよびクエリ条件に応じて、Salesforce ではインデックスまたは内部最適化が使用されます。クエリを実際に実行せずに Salesforce でクエリがどのように最適化されるかについての詳細を返すには、explain パラメータを使用します。応答に基づいて、クエリをセレクティブにするための条件を追加するなど、クエリのパフォーマンスを細かく調整するかどうかを決定できます。

この機能はベータサービスです。ベータサービスはお客様独自の裁量で試行するものとします。ベータ機能の使用には、「Agreements and Terms」に記載されたベータサービス規約が適用されます。

メモ

応答には、最も最適なものから順に並び替えられた、1 つ以上のクエリ実行プランが含まれます。クエリ、レポート、またはリストビューの実行時には最も最適なプランが使用されます。

explain を使用するときに返される項目についての詳細は、「Query Options ヘッダー」explain パラメータを参照してください。クエリをセレクティブにする方法についての詳細は、『Apex 開発者ガイド』「非常に大きい SOQL クエリの処理」を参照してください。

例: クエリのパフォーマンスに関するフィードバック

次のパフォーマンスフィードバッククエリでは、Merchandise__c を使用します。

1curl https://MyDomainName.my.salesforce.com/services/data/v59.0/query/?explain=
2SELECT+Name+FROM+Merchandise__c+WHERE+CreatedDate+=+TODAY+AND+Price__c+>+10.0

パフォーマンスフィードバッククエリのレスポンスボディは、次のようになります。

1{
2  "plans" : [ {
3    "cardinality" : 1,
4    "fields" : [ "CreatedDate" ],
5    "leadingOperationType" : "Index",
6    "notes" :  [ {
7      "description" : "Not considering filter for optimization because unindexed",
8      "fields" : [ "IsDeleted" ],
9      "tableEnumOrId" : "Merchandise__c"
10    } ],
11    "relativeCost" : 0.0,
12    "sobjectCardinality" : 3,
13    "sobjectType" : "Merchandise__c"
14  }, {
15    "cardinality" : 1,
16    "fields" : [ ],
17    "leadingOperationType" : "TableScan",
18    "notes" :  [ {
19      "description" : "Not considering filter for optimization because unindexed",
20      "fields" : [ "IsDeleted" ],
21      "tableEnumOrId" : "Merchandise__c"
22    } ],
23    "relativeCost" : 0.65,
24    "sobjectCardinality" : 3,
25    "sobjectType" : "Merchandise__c"
26  } ]
27}

この応答は、このクエリに対して 2 つの可能な実行プランが Salesforce で検出されたことを示しています。最初のプランでは、このクエリのパフォーマンスを向上するために CreatedDate インデックス項目が使用されます。2 つ目のプランでは、インデックスを使用せずにすべてのレコードがスキャンされます。クエリが実行されると、最初のプランが使用されます。どちらのプランでも、IsDeleted 項目のインデックスが作成されていないため、削除済みとマークされているレコードを除外する場合に使用される 2 つ目の最適化がありません。