0

Fusion テーブルを閲覧するための表形式の JavaScript フロント エンドを構築しています。一部のビューにはフィルターとグループバイがあり、結果をページ分割できるようにしたいと考えています。CouchDB や CloudMine などの他のクラウド データベースでは、リクエスト URL に &count=true を入れて、LIMIT を超える行の総数を取得できます。Fusion テーブルでその数を取得する方法が必要です。

2 つのオプションしか考えられませんが、どちらも高価です。

1)2つのクエリを実行します-LIMIT / OFFSETを使用したメインクエリと、LIMIT / OFFSETを使用しない同じクエリで、2番目のクエリの.lengthをカウントとして取得します

2) LIMIT/OFFSET なしで 1 つのクエリを実行し、単純にデータのサブセットを操作する

これらのオプションはどちらも、LIMIT/OFFSET を使用してネットワーク パフォーマンスを向上させるという目的を無効にします。カウントを取得する他の方法はありますか?GROUP BY を使用しているため、COUNT() で 2 番目のクエリを実行することさえできません。

アドバイスありがとうございます!

4

1 に答える 1

0

ある種の特別なパラメーターとしてカウントを受け取る方法がわかりません。そのため、second クエリしか実行できませんが、カウントを取得するためだけに同じデータを転送する必要はありません。

WHERE同じandGROUP BY句を使用してクエリを使用しますが、 ROWID. そうすれば、少量のデータのみを送信する必要があります。COUNT()または、関数を使用して、返された値を単純に合計することもできます。

ネットワーク負荷をさらに軽減したい場合は、この追加のクエリを 1 回実行するだけで済み、それ以降のすべての計算はクライアント側で行う必要があります (3 ページ目、ユーザーが行を追加する場合など) <count> - 3 * <no of rows per page><count> + 1

データがすぐに変更されない場合 (またはユーザー インターフェイスを介してのみ変更される場合)、これは可能です。テーブルごとに 1 つの追加クエリを実行することはそれほど悪くないと思います。

于 2012-10-22T15:17:13.847 に答える