节省sql查询的时间

时间:2013-03-14 13:47:10

标签: mysql sql database query-optimization

我有一个场景。我在桌子上说了300条记录。我执行一个查询来获得总计数。然后,因为我必须实现分页,

我根据计数使用限制从同一个表中选择数据。我在想是否可以在一个查询中获取计数和数据。

我尝试了以下代码:

Select * ,count(*) as cnt from table;

但这给了我总数,但只有1个记录!

有没有办法节省我在查询中耗尽的时间并在单个查询中获得结果?

3 个答案:

答案 0 :(得分:4)

类似的东西:

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'

答案 1 :(得分:0)

使用两个查询可能没有您想象的那么糟糕,您可以阅读this以获取更多信息。

答案 2 :(得分:0)

您可以获得您提到的数据结构中的信息,但实际上没有理由这样做。执行两个查询时没有性能问题 - 一个用于获取行计数,另一个用于数据选择。当您尝试选择一个查询中的所有信息时,不会保存任何内容。做两个简单的查询,它将是您的应用程序的更好的解决方案 - 您将保持其简单性和清晰度。