外部オブジェクト
queryAll()
Salesforce では外部データへの変更を追跡しないため、queryAll() コールの動作は、外部オブジェクトに対する query() と同じです。
queryMore()
外部データの Salesforce Connect クエリで、大量の結果セットがバッチやページに分割されて示されることはよくあります。外部オブジェクトを照会するとき、Salesforce Connect は Web サービスコールアウト経由で外部データにリアルタイムにアクセスします。queryMore() コールを実行するたびに、Web サービスコールアウトが行われます。バッチの区切りとページサイズは、アダプタと外部データ取得元の設定方法に応じて異なります。
- 可能ならば、外部オブジェクトのクエリを、デフォルトのバッチサイズである 500 行よりも少ない行を返すように絞り込んでページングを避けます。バッチを取得するたびに queryMore() コールが必要になり、その結果、Web サービスコールアウトが行われます。
- 外部データが頻繁に変更される場合は、queryMore() コールの使用を避けてください。次の queryMore() コールまでの間に外部データが変更された場合、予期しない QueryResult になることがあります。
SELECT ステートメントの主オブジェクト (「主導」オブジェクト) が外部オブジェクトの場合、queryMore() は主オブジェクトのみをサポートし、サブクエリをサポートしません。
デフォルトでは、Salesforce Connect の OData 2.0 および 4.0 アダプタは、クライアント駆動のページングを使用します。クライアント駆動ページングにより、OData アダプタは各 queryMore() コールを、$skip および $top システムクエリオプションを使用してバッチの区切りとページサイズを指定する OData クエリに変換します。これらのオプションは、LIMIT および OFFSET 句を使用した結果セットのページ処理に似ています。
外部データソースのサーバ駆動ページングを有効にすると、要求されたページサイズ (デフォルトのqueryMore() バッチサイズの 500 行を含む) が Salesforce で無視されます。バッチは、外部システムによって返されるページで決まりますが、各ページは 2,000 行を超えることはできません。