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