Loading
ただいま大変多くのお問い合わせをいただいており、ご連絡までにお時間を頂戴しております続きを読む

対象期間ベースの検証でフィールドサービスの状態チェックを実行中に、「Too many query rows:50001」(クエリの行が多すぎます: 50001) というエラーが発生する

公開日: Jul 3, 2026
説明
問題

[対象期間ベースの検証] タブで Field Service 状態チェックを実行すると、 Too many query rows:50001 (クエリの行が多すぎます: 50001) というエラーにより操作が失敗します。これにより、単一のテリトリーが選択されている場合でも、状態チェックが完了しなくなります。通常、この問題は最適化のしきい値を増やしたり、対象期間を延長したりした後に発生または悪化します。

 
原因

Salesforce では、1 回の Apex クエリに対して 50,000 行という制限が適用されます。[対象期間ベースの検証] ページでは、ServiceAppointment、ServiceTerritoryMember、Shift、および関連オブジェクトに対して複数の集計クエリが実行されます。テリトリーの対象期間内の ServiceAppointment レコード件数の合計が 50,000 行を超えると、結合されたクエリ結果セットによってガバナ制限の例外がトリガーされます。

これは、組織のサービステリトリーが大規模な場合、対象期間が長い場合、ServiceAppointment の履歴レコード (完了レコードとキャンセル済みレコードを含む) が大量にある場合に発生しやすくなります。

注意:組織の ServiceAppointment 件数を確認するには、Developer Console で次の SOQL クエリを実行します。
SELECT COUNT(Id) FROM ServiceAppointment WHERE ServiceTerritory.Name = '' AND EarliestStartTime = TODAY
結果が 50,000 件を超えると、状態チェックは失敗します。上限に近い場合 (45,000 件以上など) は、将来的な増加に備えて次の解決戦略を実装することを検討します。
解決策

状態チェックが失敗するのは、対象期間内で照会される ServiceAppointment 行が多すぎるためです。次の当面の回避策を実施し、その後、問題を恒久的に解決するために 1 つ以上長期戦略を適用します。

当面の回避策 - [未スケジュール] で絞り込む

  1. Field Service 状態チェック ([対象期間ベースの検証] タブ) を開きます。
  2. テリトリーを選択します。
  3. [Filter Services By:Unscheduled] (サービスの絞り込み条件: 未スケジュール) チェックボックスをオンにします。
  4. [Run Health Check] (状態チェックを実行) をクリックします。


これにより、すでにスケジュールされている ServiceAppointment がクエリから除外され、行数が 50,000 行のしきい値未満になります。

注意:この回避策では、スケジュール済みの予定は検証されません。長期的なデータクリーンアップを計画しつつ、テリトリーの設定を確認する目的で使用します。


長期戦略

  1. 完了したレコードをアーカイブまたは削除する ー 対象期間内の ServiceAppointment のうち、古いもの、完了したもの、キャンセルされたものを削除します。これは、クエリ行の件数を減らす最も直接的な方法です。一括削除する前に、組織のデータ保持ポリシーを確認してください。
  2. 「テリトリーを照合」の作業ルールを追加するMatch Territory 種別の作業ルールをスケジュールポリシーに追加します。これにより、状態チェックの実行中に評価された ServiceTerritoryMembers の範囲が絞り込まれ、データを削除しなくても照会される関連レコードが減少します。
    • Field Service でスケジュールポリシーを開きます。
    • Match Territory 種別の新しい作業ルールを追加します。
    • 各予定のサービステリトリーに合わせて設定します。
  3. 対象期間を短縮する ー 状態チェックで評価される日付範囲を絞り込みます。たとえば、30 日間から 14 日間または 7 日間に短縮すると、照会される ServiceAppointment が少なくなります。
  4. 保存ポリシーを確立する ー ServiceAppointment の保存ポリシーを設定または厳格化して、今後の蓄積を防ぎます。完了した予定を定期的 (四半期ごとや 1 年ごと) にアーカイブまたは削除します。


注意:ServiceAppointments のアーカイブまたは削除は恒久的です。続行する前に、保存ポリシーがビジネスおよびコンプライアンスの要件に従っていることを確認してください。対象期間を短縮すると、その期間外にある予定については、状態チェックで最適化の機会を検出できなくなる恐れがあります。
ナレッジ記事番号

005387654

 
読み込み中
Salesforce Help | Article