開発者コンソールで有効にすると、コンソールの [クエリエディター] タブでクエリプランツールにアクセスできるようになります。
クエリプランツールを使用するには、クエリエディターにクエリを入力し、[クエリプラン] を押すと、すべてのクエリ操作と、指定した SOQL の各操作のコストが表示されます。
このツールは、処理速度が遅い SOQL クエリのクエリプランをチェックするのに使用します。異なるプランへのインサイトを提供し、条件がインデックス化されている場合は、テーブルの完全スキャンを実行した場合のコストと比較してそのインデックスを使用した場合のコストを示します。
テーブルのスキャンの方がインデックスよりも低く、かつクエリがタイムアウトする場合は、別の条件を使用してさらに解析を行って選択度を向上させるか、そのクエリにインデックス化されていない別のセレクティブ条件がある場合はそれも候補として検討します。
クエリプランツールを実行すると、指定したクエリにクエリオプティマイザーで利用できるプランがコストの昇順 (低い順) で表示されます。
各プランには、Cardinality (基数)、Operation Type (操作種別)、Cost (コスト)、sObject Type (sObject 型) などの情報が含まれています。プランごとに、項目インデックスやテーブルの完全スキャンなど、「主要な操作種別」があります。最もコストが低いクエリが、クエリ実行を促進するために使用されます。
基数 |
項目 |
主要な操作種別 |
コスト |
sObject 基数 |
sObject 型 |
|---|---|---|---|---|---|
|
主要な操作種別で返されると予想されるレコードの件数。
たとえば、インデックステーブルを使用した場合に返されるレコードの数。 | クエリオプティマイザーによって使用されるインデックス付けされた項目。主要な操作種別がインデックスの場合、項目値は「Index」になります。それ以外の場合、項目値は null です。 |
クエリを最適化するために Salesforce で使用される主な操作種別。
| Force.com クエリオプティマイザーの選択しきい値と比較したクエリのコスト。値が 1 を超える場合、そのクエリはセレクティブにはなりません。 |
クエリ対象オブジェクトの最大レコード件数。
|
クエリ対象の名前。
|
プランごとに独自のコスト値があります。コスト値は、テーブルと値で収集された最新のデータベース (DB) 統計を基に計算されます。最もコストが低いプランが使用プランとして選定されます。1 を超えるコスト値は、クエリがセレクティブにならないことを示します。
指定したクエリで条件にインデックス付けされた項目が含まれる場合、その項目についてサポートされている操作を使用している場合にのみ、その項目のプランが表示されます。
サポートされていない操作は次のとおりです:
注意: インデックスを使用する OR フィルターは、説明プランの出力に「Other」として表示されます。
クエリプランツールでは、プランのセクションにインデックス付けされた項目の統計が表示されるだけで、インデックス付け可能な項目は表示されません。このツールは、インデックス付け可能な項目に関する情報を提供するものではありません。
インデックス付け可能な項目を判断する方法については、「SOQL クエリをセレクティブにする方法」を参照してください。
次の例では、2 つのインデックス付き項目を使用します。Account sObject のチェックボックス (InActiveAcc__c) と選択リスト (Account_Hierarchy__c)。
注意: この新しい開発者コンソールツールの元となったクエリリソースフィードバックパラメーターパイロットに関する元の投稿で、さらに多くのサンプルクエリを見つけることができます。
SELECT count() FROM Account WHERE Account_Hierarchy__c = 'Parent'
シナリオ:セレクティブバインド変数を含むインデックス付き項目
SELECT count() FROM Account WHERE InActiveAcc__c = true AND Account_Hierarchy__c = 'Parent'
シナリオ:インデックス付き項目が 2 つ、セレクティブが 1 つ
SELECT count() FROM Account WHERE InActiveAcc__c = true AND Account_Hierarchy__c != 'Parent' **NOTE:インデックスでサポートされていない操作を使用**
シナリオ:2 個のインデックス付き項目、1 個のセレクティブ BUT にサポートされていない操作を使用します。
SELECT count() FROM Account WHERE Account_Hierarchy__c = 'Child'
シナリオ:非セレクティブバインディング変数を使用するインデックスフィールド 1 つ (sObject の行数の 10% 以上)
000386864

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.