1

我有一个场景,我得到一个计数,然后将计数作为变量传递给类似的查询以获取分页记录。所以基本上我正在做一个完整的查询,通过内部创建完整的表来获取所有的计数,然后使用该计数来显示同一个表,每页 10 个。我有什么解决方案来避免这种多重查询?

像这样的东西是一种伪语言。

select count {big table}

select big table where records are between count and count+10

有没有一种明智的方法可以在同一个查询中获取 COUNT 变量?

我想知道谷歌将如何处理搜索,它会首先找到所有记录还是只获取记录而不跟踪页面数?无法事先计算页码,因为它取决于用户发送的变量。

编辑:我在这里有一个类似的问题https://dba.stackexchange.com/questions/161586/including-count-of-a-result-in-the-main-query

4

1 回答 1

3

关于谷歌,他们可能只生成请求数量的结果(如 10 个)并估计数量。估计的计数非常不精确。

您不能让 SQL Server 计算所有结果并仅获取其中的一个子集。有3种策略来解决这个问题:

  • 执行计数和数据查询
  • 在客户端执行无限数据查询并丢弃除十个结果之外的所有结果
  • 对主键为行号的临时表执行无限数据查询。然后,您可以立即计数(获取最后一行)并通过单次搜索按行号选择任何子集

由于 SQL Server 可以使用不同的索引或丢弃连接,因此计算数据的成本会大大降低。

于 2012-05-03T11:12:28.970 回答