从complexQuery中选择Count(Id)但不超过1000

时间:2013-08-09 11:15:16

标签: sql count

我有复杂的查询,返回数百万行。我使用像“结果1-20 of 1235416”的寻呼机,我每页只选择20行来快速。但查询“从中选择计数(ID)”非常慢,因为即使进行了相当优化,它也可以解析所有复杂查询。我可以向用户展示:

结果1-20超过1000 ...像谷歌一样。

以下查询应该如何?

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

如果它与mssql,mysql和sqlite兼容,那就没问题了。

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

MySQL 5.1不支持“但不超过”语法。

为什么不能这样:

SELECT * from table LIMIT 0,20;

我假设你真的不关心伯爵。