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

リレーションクエリ制限について

SOQL リレーションクエリを設計する場合、複数の制限を考慮する必要があります。
  • リレーションクエリは SQL 結合と同じではありません。SOQL 内で結合を作成するためには、オブジェクト間のリレーションを持つ必要があります。
  • 1 回のクエリに指定できる子-親リレーションは、55 個以下です。カスタムオブジェクトには最大 40 個のリレーションが許可されているため、1 回のクエリでカスタムオブジェクトのすべての子-親リレーションを参照できます。
  • 多態的な項目への 1 回のクエリは、子から親へのリレーションの制限に対して複数回反映される可能性があります。たとえば、次のクエリには制限の対象となる 3 つのリレーションがあります。
    1SELECT 
    2  TYPEOF What
    3    WHEN Account THEN Phone, NumberOfEmployees
    4    WHEN Opportunity THEN Amount, CloseDate
    5    ELSE Name, Email
    6  END
    7FROM Event
    WhatAccountOpportunity はこの制限の対象となります。

    次のクエリでは、ID を使用して 1 つのレコードを指定しているため、制限の対象となるリレーションは 1 つです。指定されたレコードのみが照会されます。

    1SELECT 
    2  TYPEOF What
    3    WHEN Account THEN Phone, NumberOfEmployees
    4    WHEN Opportunity THEN Amount, CloseDate
    5    ELSE Name, Email
    6  END
    7FROM Event WHERE ID="someId"
    クエリで同じリレーションが複数回使用されている場合も、1 つのリレーションとして計数されます。
  • 1 回のクエリに指定できる親-子リレーションは、20 個以下です。
  • 指定された各リレーションで、1 つの子-親リレーションに指定できるレベルは 5 つ以下です。たとえば、Contact.Account.Owner.FirstName は 3 レベルです。
  • API バージョン 57.0 以前の場合、1 つのクエリ内で 2 レベルまでの親-子リレーションしか指定できません。
  • API バージョン 58.0 以降では、REST および SOAP クエリコールにより、標準およびカスタムオブジェクトの最大 5 レベルの親-子リレーションを照会できます。5 レベルの親-子リレーションについての SOQL クエリは、Big Object、外部オブジェクト、または Apex、Bulk API、Bulk API 2.0 ではサポートされていません。
  • 情報を得るために、メモと添付ファイルを照会することは可能ですが、メモと添付ファイルの内容を絞り込むことはできません。オブジェクト内の textarea 項目、BLOB、または Scontrol コンポーネントの内容に対しての絞り込みはできません。たとえば、次のクエリは有効で、取引先と関連付けられたあらゆるメモに関して、すべての取引先名と所有者 ID を返します。
    1SELECT Account.Name, (SELECT Note.OwnerId FROM Account.Notes) FROM Account
    ただし、次のクエリは、メモの本文に保存された情報の評価を試みているため、有効でありません。
    1SELECT Account.Name, (SELECT Note.Body FROM Account.Notes WHERE Note.Body LIKE 'D%') FROM Account

    WHERE 句を削除すると、クエリは有効になり、メモの本文の内容が返されます。

    1SELECT Account.Name, (SELECT Note.Body FROM Account.Notes) FROM Account
  • USING SCOPE 句を使用して親-子リレーションクエリの結果を指定の範囲に制限することはできません。
  • 外部オブジェクトについては、次の制限を考慮します。
    • 外部オブジェクト、または親の外部オブジェクトの検索条件を含むサブクエリで取得できるデータは、最大 1,000 行です。
    • 各 SOQL クエリ内の結合は、外部オブジェクトとその他の種別のオブジェクト全体で最大 4 個です。

      クエリの実行時、結合ごとに外部システムへの往復処理が必要です。クエリ内の各結合に対して長めの応答時間を想定してください。

    • 外部オブジェクトは、リレーションクエリの ORDER BY 句をサポートしません。この制限は、Salesforce Connect の OData 2.0 アダプターを介して外部データにアクセスする場合にのみ適用されます。
    • SELECT ステートメントの主オブジェクト (「主導」オブジェクト) が外部オブジェクトの場合、queryMore() は主オブジェクトのみをサポートし、サブクエリをサポートしません。