1

我有复杂的查询,它返回数百万行。我使用像“1235416 的结果 1-20”这样的寻呼机,并且我只选择每页 20 行来快速。但是查询“Select Count(ID) from”非常慢,因为即使经过优化,它也能解决所有复杂的查询。我可以向用户展示:

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

下面的查询应该是怎样的?

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 回答
0

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

为什么不这样:

SELECT * from table LIMIT 0,20;

我假设你真的不在乎计数。

于 2013-08-09T11:33:20.577 回答