2016-05-24 13 views
1

「ニッケル」N1QLでSQL_CALC_FOUND_ROWS/FOUND_ROWSの同等は何がある任意のポケットベルの目的を準備するためのLIMITOFFSETで使用するMySQLでSQL_CALC_FOUND_ROWSFOUND_ROWS()のと同じですN1QL内の関数に建てられましたか?()Couchbaseの

全く同じ結果を得るためではなく、あなたが(ので、我々は数えることができる、我々はデータを並べ替える場合は、完全な可能結果セットのカウントを取得

SELECT COUNT(id) FROM mybucket WHERE <same condition that get first result set> 

答えて

1

以下に述べる追加N1QLクエリを実行するための最良の回避策は何されていない場合)、結果セットをLIMITします。 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」メソッドをクエリに使用できるかどうかを示す説明が表示されます。

例:

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> 
+0

おかげ@Keshavが、どのように我々は、このようなPHP –

+0

こんにちは@ MohammedAl-HyariとしてSDKを介して 'n1ql'クエリを実行した場合のメトリックは、結果内のオブジェクトを取得することができます - 今、ソートが完了したときだけ自動的に取得されます。この完全なカウントはページネーションにとって重要ですか?これを私たちの機能要求に入れました:MB-19763。あなたはそれを計画に従えます。ありがとう。 –