N1QL "nickel" Couchbase 中 SQL_CALC_FOUND_ROWS / FOUND_ROWS() 的等价物是什么
What is the equivalent of SQL_CALC_FOUND_ROWS / FOUND_ROWS() in N1QL "nickel" Couchbase
N1QL 中是否有任何内置函数相当于 MySQL 中的 SQL_CALC_FOUND_ROWS
AND FOUND_ROWS()
与 LIMIT
一起使用,OFFSET
用于准备寻呼机用途?
如果不是,获得相同结果的最佳解决方法是什么而不是执行下面提到的额外 N1QL 查询
SELECT COUNT(id) FROM mybucket WHERE <same condition that get first result set>
在我们对数据进行排序(以便我们可以计数)并限制结果集的情况下,您可以获得完整可能的结果集的计数。 sortCount 是没有限制的可能文档的总数。
select * from `beer-sample` where city > "" order by city limit 10;
...
"status": "success",
"metrics": {
"elapsedTime": "273.677801ms",
"executionTime": "273.636223ms",
"resultCount": 10,
"resultSize": 8740,
**"sortCount": 1390**
}
}
如果没有 ORDER BY,您只会得到以下结果。
select * from `beer-sample` where city > "" limit 10;
...
"status": "success",
"metrics": {
"elapsedTime": "21.661524ms",
"executionTime": "21.619021ms",
"resultCount": 10,
"resultSize": 10163
}
}
在 4.5 中,当您进行覆盖索引扫描时,您可以发出并行查询以仅从索引扫描进行计数。
说明将指示此 "CountScan" 方法 can/is 是否用于查询。
示例:
cbq> explain select count(1) from `beer-sample` where city = 'San Francisco';
{
"requestID": "fe9b3f0f-bfc2-4132-bfd7-6268b78860d4",
"signature": "json",
"results": [
{
"plan": {
"#operator": "Sequence",
"~children": [
{
**"#operator": "IndexCountScan",**
"covers": [
"cover ((`beer-sample`.`city`))",
"cover ((meta(`beer-sample`).`id`))"
],
"index": "idxcity",
"index_id": "66d88e11a6178a04",
"keyspace": "beer-sample",
"namespace": "default",
"spans": [
{
"Range": {
"High": [
"\"San Francisco\""
],
"Inclusion": 3,
"Low": [
"\"San Francisco\""
]
}
}
],
"using": "gsi"
},
{
"#operator": "IndexCountProject",
"result_terms": [
{
"expr": "count(1)"
}
]
}
]
},
"text": "select count(1) from `beer-sample` where city = 'San Francisco'"
}
],
"status": "success",
"metrics": {
"elapsedTime": "4.434551ms",
"executionTime": "4.382437ms",
"resultCount": 1,
"resultSize": 1572
}
}
cbq>
N1QL 中是否有任何内置函数相当于 MySQL 中的 SQL_CALC_FOUND_ROWS
AND FOUND_ROWS()
与 LIMIT
一起使用,OFFSET
用于准备寻呼机用途?
如果不是,获得相同结果的最佳解决方法是什么而不是执行下面提到的额外 N1QL 查询
SELECT COUNT(id) FROM mybucket WHERE <same condition that get first result set>
在我们对数据进行排序(以便我们可以计数)并限制结果集的情况下,您可以获得完整可能的结果集的计数。 sortCount 是没有限制的可能文档的总数。
select * from `beer-sample` where city > "" order by city limit 10;
...
"status": "success",
"metrics": {
"elapsedTime": "273.677801ms",
"executionTime": "273.636223ms",
"resultCount": 10,
"resultSize": 8740,
**"sortCount": 1390**
}
}
如果没有 ORDER BY,您只会得到以下结果。
select * from `beer-sample` where city > "" limit 10;
...
"status": "success",
"metrics": {
"elapsedTime": "21.661524ms",
"executionTime": "21.619021ms",
"resultCount": 10,
"resultSize": 10163
}
}
在 4.5 中,当您进行覆盖索引扫描时,您可以发出并行查询以仅从索引扫描进行计数。
说明将指示此 "CountScan" 方法 can/is 是否用于查询。
示例:
cbq> explain select count(1) from `beer-sample` where city = 'San Francisco';
{
"requestID": "fe9b3f0f-bfc2-4132-bfd7-6268b78860d4",
"signature": "json",
"results": [
{
"plan": {
"#operator": "Sequence",
"~children": [
{
**"#operator": "IndexCountScan",**
"covers": [
"cover ((`beer-sample`.`city`))",
"cover ((meta(`beer-sample`).`id`))"
],
"index": "idxcity",
"index_id": "66d88e11a6178a04",
"keyspace": "beer-sample",
"namespace": "default",
"spans": [
{
"Range": {
"High": [
"\"San Francisco\""
],
"Inclusion": 3,
"Low": [
"\"San Francisco\""
]
}
}
],
"using": "gsi"
},
{
"#operator": "IndexCountProject",
"result_terms": [
{
"expr": "count(1)"
}
]
}
]
},
"text": "select count(1) from `beer-sample` where city = 'San Francisco'"
}
],
"status": "success",
"metrics": {
"elapsedTime": "4.434551ms",
"executionTime": "4.382437ms",
"resultCount": 1,
"resultSize": 1572
}
}
cbq>