フィルターのOR条件(EncodedQuery)

Ereshkigal
Tera Contributor

コミュニティの皆様
いつもお世話になっております。

私はScripted APIのQueryParameterに以下絞り込み設定を追加しております。
※IncidentのShort descriptionにて、特定の文字列が含まれている場合、
 抽出するという要件があります。

Incidentリストから以下フィルター条件を設定
find_real_file.png

Copy Queryから以下クエリを取得し、QueryParameterに追加

short_descriptionLIKEATF^ORshort_descriptionLIKETEST^ORshort_descriptionLIKESAP

私は気になったのは、このクエリに毎回short_descriptionが含まれていることです。
以下3点確認させてください

  1. クエリ条件を追加していく毎にこちらのクエリも長くなっていきますが、
    上限は存在するのでしょうか。
  2. また上限が存在する場合、short_descriptionを省略するなど文字数を削減することはできるのでしょうか。
  3. 上限を超えるとクエリは失敗する?それとも削減された部分のみクエリが実行されないのでしょうか
1 ACCEPTED SOLUTION

iwai
Giga Sage
  1. Q  クエリ条件を追加していく毎にこちらのクエリも長くなっていきますが、上限は存在するのでしょうか。
    1. A 上限は知らないですが、クエリーが100万文字程度(ORが1万件)なら動作します。そのくらいになると検索に1分以上かかり負荷も高くなっていきます。データーベースの限界まで増やすより、適切な範囲になるようプログラムで制限するべきです。
      限界を試してみたい場合は、テストプログラムでも作って限界値を探ってみてはいかがでしょうか。
  2. Q また上限が存在する場合、short_descriptionを省略するなど文字数を削減することはできるのでしょうか。
    1. A クエリ―文字列を圧縮した短い文字にするような方法はなさそうです。クエリーを2回に分割して実行するのはどうでしょうか。
  3. Q 上限を超えるとクエリは失敗する?それとも削減された部分のみクエリが実行されないのでしょうか
    1. A 無効なQuery場合の初期動作は、無効な部分を無視して、有効な部分でクエリーします。全部無効と判断すると、クエリー条件なしとして全レコード検出します。
      詳細はDocsの”glide.invalid_query.returns_no_rows”を参照 Available system properties (servicenow.com)

 

View solution in original post

1 REPLY 1

iwai
Giga Sage
  1. Q  クエリ条件を追加していく毎にこちらのクエリも長くなっていきますが、上限は存在するのでしょうか。
    1. A 上限は知らないですが、クエリーが100万文字程度(ORが1万件)なら動作します。そのくらいになると検索に1分以上かかり負荷も高くなっていきます。データーベースの限界まで増やすより、適切な範囲になるようプログラムで制限するべきです。
      限界を試してみたい場合は、テストプログラムでも作って限界値を探ってみてはいかがでしょうか。
  2. Q また上限が存在する場合、short_descriptionを省略するなど文字数を削減することはできるのでしょうか。
    1. A クエリ―文字列を圧縮した短い文字にするような方法はなさそうです。クエリーを2回に分割して実行するのはどうでしょうか。
  3. Q 上限を超えるとクエリは失敗する?それとも削減された部分のみクエリが実行されないのでしょうか
    1. A 無効なQuery場合の初期動作は、無効な部分を無視して、有効な部分でクエリーします。全部無効と判断すると、クエリー条件なしとして全レコード検出します。
      詳細はDocsの”glide.invalid_query.returns_no_rows”を参照 Available system properties (servicenow.com)