1

何百万もの行を返す複雑なクエリがあります。「1235416 の結果 1-20」のようなページャーを使用し、1 ページあたり 20 行のみを選択してすばやく処理します。しかし、クエリ "Select Count(ID) from " は、非常に最適化されていても、すべての複雑なクエリを解決するため、非常に遅くなります。ユーザーに表示しても問題ありません。

1000 以上の結果 1-20... google のように。

次のクエリはどのようになりますか?

Select Count(Id) but no more than 1000 from <complexQuery>.

mssql、mysql、sqlite に対応していれば問題ありません。

4

2 に答える 2

1

ComplexQuery内で「TOP 1000」(または使用しているデータベースのタイプに応じて同等のもの)を実行できます。

例えば:

SELECT COUNT(T.Id)
  FROM ( SELECT TOP 1000 Id FROM <ComplexQuery> ) as T

編集:

上記は MsSQL (または TSQL) で機能します。MySql では、これは次のようになります。

SELECT COUNT(T.Id)
  FROM ( SELECT Id FROM <ComplexQuery> LIMIT 1000 ) as T

よくわかりませんが、最後のものはsqliteでも機能すると思います。

于 2013-08-09T11:20:47.127 に答える