我有一个场景。我的表格中有300条记录。我执行一个查询来获得总数。然后,因为我必须实现分页,所以我使用根据计数的限制从同一个表中选择数据。我在想如果我能在单个查询中获得计数和数据。 。在sql查询中节省时间
我尝试下面的代码:
Select * ,count(*) as cnt from table;
但是,这给我的总数却只有1个纪录!
有没有一种方法可以节省我在查询中耗尽的时间,并在单个查询中获得结果?
我有一个场景。我的表格中有300条记录。我执行一个查询来获得总数。然后,因为我必须实现分页,所以我使用根据计数的限制从同一个表中选择数据。我在想如果我能在单个查询中获得计数和数据。 。在sql查询中节省时间
我尝试下面的代码:
Select * ,count(*) as cnt from table;
但是,这给我的总数却只有1个纪录!
有没有一种方法可以节省我在查询中耗尽的时间,并在单个查询中获得结果?
类似:
select t1.*,t2.cnt
from table t1
cross join (select count(*) as cnt from table) t2
limit 'your limit for the first page'
或
select *,(select count(*) from table) as cnt
from table
limit 'your limit for the first page'
可以请你解释第一次回答一次。我没有那么多的知识 – PSR 2013-03-14 13:55:59
我加入了它的计数表(一行一列的表)。我显示来自第二个表的所有内容和计数。 – 2013-03-14 13:58:13
但是使用这个我将不得不每次都执行计数查询。不是吗? – 2013-03-15 05:32:57
你可以从你提到的数据结构中获得信息,但是确实没有理由这样做。当您执行两个查询时没有性能问题 - 一个用于获取行数,另一个用于数据选择。当您尝试选择一个查询中的所有信息时,您不保存任何内容。做两个简单的查询,它会是更好的解决方案 - 你会保持简单和清晰。
如果您正在进行分页,使用应用程序代码(php,.net,coldfusion等)可能会使整个过程更加简单。 – 2013-03-14 14:05:01
@DanBracuk - 应用程序代码无法在“LIMIT”数据集上获得全表计数。 – 2013-03-14 14:40:24