我有一个复杂的SQL查询,返回前100条记录,用于构建带分页的网格。 为了呈现分页,我需要总记录数。现在我正在查询数据库两次,首先得到指定where条件的总记录(比如它会返回12,567)
Select count(*) as TotalRecords from (select a.field1, b.field2, c.field3 from abc a inner join xyz b on b.id = a.id inner join .... where ...) temp
第二次获得前100名记录
select TOP 100 a.field1, b.field2, c.field3 from abc a inner join xyz b on b.id = a.id inner join .... where ...
这种方法的问题是由于重量级查询导致的性能影响,有时需要很长时间来运行两个查询。
有没有办法在没有查询两次的情况下获得前100条记录以及总记录数?
答案 0 :(得分:1)
由于两个查询都返回不同的结果集,因此无法一次性完成此操作。一个只返回记录计数,而另一个返回前100个记录。记录数量不会对查询性能产生太大影响,但您也可以使用Count(fieldName)来优化查询。