パフォーマンス低下時に REST API を使用するためのベストプラクティスIssue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } ServiceNow インスタンスでテーブル API を使用して大きなテーブルをクエリすると、REST API 要求のパフォーマンスが低下することがあります。 Symptoms<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } - 遅い応答時間 - 統合または UI ウィジェットを介してデータをロードすると、顕著な遅延があります。 - クエリの実行時間が長すぎるために失敗する可能性があります。 - 大きなペイロード - クエリーが不十分 - 未使用データの過剰フェッチ Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } すべて Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } ServiceNow テーブル API を使用する場合、API 呼び出し中のパフォーマンス向上に役立つ共通フィールドを以下に示します。 1. sysparm_no_count=true ServiceNow の REST API では、上記のパラメーターを使用して、テーブルからレコードを取得するときに COUNT(*) クエリが実行されないようにします。 このパラメーターは、レコードの合計数の計算を回避し、パフォーマンスを大幅に向上させる可能性があります。特にインシデントやタスクなどの大きなテーブルではコストがかかります。応答時間が短縮され、データベースの負荷が軽減され、合計数は必要ありません。例: /api/now/table/incident?sysparm_no_count=true 2. sysparm_fields ServiceNow の REST API では、上記のパラメーターを使用して、テーブルをクエリするときに応答に含めるフィールドを指定しますこのパラメーターを使用すると、行全体ではなくレコードから必要な列を取得できます。 これにより、効率が向上し、不要なデータ転送やペイロードサイズが削減されます。例: /api/now/table/incident?sysparm_fields=number,short_description,priority 3. sysparm_limit と sysparm_offset ServiceNow の REST API では、上記のクエリパラメーター (sysparm_limit) を使用して、データを取得するときに単一の応答で返されるレコードの数を制御します。同様に、sysparm_offset はデータを取得するときにページネーションに使用されるもう 1 つのパラメーターで、レコード取得の開始点を指定するため、大量の要求ではなく管理可能なチャンクでデータをフェッチできます。一般に、 sysparm_limit は多くの場合、パフォーマンスの問題を回避するために、大規模なデータセットで作業する場合は sysparm_offset 常に良い習慣です。例: /api/now/table/incident?sysparm_limit=100&sysparm_offset=0-- 上記の例の API は、最初の 100 件のインシデントレコードをフェッチします。次の 100 を取得するには、オフセットを変更します。-- sysparm_offset=100 の場合、最初の 100 件のレコードをスキップし、101 番目のレコードから取得を開始します。つまり、101 から 200 までのレコードを返します-- 安定したページネーションのためには、次のようなクエリで常に ORDERBY 句を使用します。-- /api/now/table/incident?sysparm_limit=100&sysparm_offset=100&sysparm_query=ORDERBYsys_created_on 4. sysparm_query ServiceNow の REST API では、このパラメーターを使用して API によって返されるデータをフィルタリングします。 テーブルをクエリするときに応答に含めるフィールドの条件を指定できるため、クエリのパフォーマンスが向上します。大きなテーブルをクエリする場合は、常にフィルターフィールドのインデックスを使用してください。これにより、クエリのパフォーマンスがさらに向上します。例 1:/api/now/table/incident?sysparm_query=active=true^priority=1例 2: /api/now/table/incident?sysparm_query=sys_created_on>=2025-04-01 00:00:00^sys_created_on<=2025-07-14 23:59:59^ORDERBYsys_created_on例 3: /api/now/table/incident?sysparm_query=sys_created_on>=javascript:gs.monthsAgoStart(3)^ORDERBYsys_created_on&sysparm_limit=100&sysparm_no_count=true Related Links<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 詳細については、 ServiceNow Table API ドキュメントを参照してください。 https://www.servicenow.com/community/servicenow-ai-platform-articles/an-introduction-to-the-batch-rest-api-endpoint-api-now-batch/ta-p/2317136https://developer.servicenow.com/dev.do#!/guides/xanadu/now-platform/tpb-guide/scripting_technical_best_practiceshttps://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB0564204