我有复杂的查询,返回数百万行。我使用像“结果1-20 of 1235416”的寻呼机,我每页只选择20行来快速。但查询“从中选择计数(ID)”非常慢,因为即使进行了相当优化,它也可以解析所有复杂查询。我可以向用户展示:
结果1-20超过1000 ...像谷歌一样。
以下查询应该如何?
Select Count(Id) but no more than 1000 from <complexQuery>.
如果它与mssql,mysql和sqlite兼容,那就没问题了。
答案 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;
我假设你真的不关心伯爵。