メインコンテンツまでスキップ
バージョン: v20 R3

$querypath

4D Server によって実際に実行されたクエリを返します (: $querypath=true)

説明

$querypath は、4D Server によって実際に実行されたクエリを返します。 たとえば、クエリの一部がエンティティを返さなかった場合、残りのクエリは実行されません。 $querypath で確認されるとおり、クエリリクエストは最適化されます。

クエリパスについての詳細は queryPlan と queryPath を参照ください。

実行されたクエリを定義する次のプロパティを格納した steps コレクションが返されます:

プロパティタイプ説明
descriptionString実際に実行されたクエリ、または複数ステップの場合は "AND"
timeNumberクエリの実行に要した時間 (ミリ秒単位)
recordsfoundsNumberレコードの検出件数
stepsCollectionクエリパスの後続ステップを定義するオブジェクトのコレクション

例題

以下のクエリを渡した場合:

GET /rest/Employee/$filter="employer.name=acme AND lastName=Jones"&$querypath=true

エンティティが見つからなかった場合に次のように書くと、後述のクエリパスが返されます:

GET /rest/$querypath

レスポンス:

__queryPath: {

steps: [
{
description: "AND",
time: 0,
recordsfounds: 0,
steps: [
{
description: "Join on Table : Company : People.employer = Company.ID",
time: 0,
recordsfounds: 0,
steps: [
{
steps: [
{
description: "Company.name = acme",
time: 0,
recordsfounds: 0
}
]
}
]
}
]
}
]

}

最初のクエリが一つ以上のエンティティを返した場合には、二つめのクエリが実行されます。 以下のクエリを実行した場合:

GET /rest/Employee/$filter="employer.name=a* AND lastName!=smith"&$querypath=true

少なくとも1件のエンティティが見つかった場合に次のように書くと、後述のクエリパスが返されます:

GET /rest/$querypath

レスポンス:

"__queryPath": {
"steps": [
{
"description": "AND",
"time": 1,
"recordsfounds": 4,
"steps": [
{
"description": "Join on Table : Company : Employee.employer = Company.ID",
"time": 1,
"recordsfounds": 4,
"steps": [
{
"steps": [
{
"description": "Company.name LIKE a*",
"time": 0,
"recordsfounds": 2
}
]
}
]
},
{
"description": "Employee.lastName # smith",
"time": 0,
"recordsfounds": 4
}
]
}
]
}