首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Coldfusion进行分页

问使用Coldfusion进行分页
EN

Stack Overflow用户
提问于 2010-07-30 00:42:25
回答 9查看 1.6K关注 0票数 2

是否可以仅使用一个查询对Coldfusion中的页数进行分页和显示?

我的理解是,您显然可以使用一个查询来分页,但您需要一个额外的查询来创建页面。这是为了计算结果的总数。

(currentPage - 1) * resultsPerPage = Offset in MySQL查询。这个逻辑足以创建next/prev按钮。但是,为了知道页数,我们不需要使用单独的查询,然后查询数据的查询来知道结果的总数?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-07-30 01:14:22

是的,典型的基于mysql的方法需要两个查询:一个使用select count(*) from table,第二个使用select a, b, c from table limit x,y,其中x和y是根据当前页面和所需的偏移量构建的。

对于单个查询,您需要选择所有记录,这在大多数情况下效率较低。

票数 2
EN

Stack Overflow用户

发布于 2010-07-30 02:14:44

在MS SQL中,使用CTE:

接收参数@startRow和@endRow以及所需的参数

代码语言:javascript
复制
WITH qTemp AS (
   select *
   ,   count(*) as totCnt
   ,   rowNum = ROW_NUMBER() OVER(ORDER BY myIndex ASC)
   from myTable
   where (my where clause)
)
SELECT * FROM qTemp
WHERE rowNum BETWEEN @startRow AND @endRow
票数 3
EN

Stack Overflow用户

发布于 2010-07-30 01:17:35

我对MySQL不是很熟悉,但我知道在MySQL中,一个存储过程可以返回多个结果集。

如果您不能做到这一点,有您建议的两种方法,但第二种方法可以优化。

首先,运行两个查询。一个用于获取当前显示页面的数据,另一个用于获取结果集的总大小。如果数据频繁更改,或者如果通常不显示多个页面,我就会这么做。这需要两个db调用,但减少了返回的总大小。如果您不经常更改数据,但很少在每个查询中使用超过几个页面,那么您还可以缓存总结果计数。

第二种方法是在一个大型查询中返回所有结果,并且只显示相应的页面。这里不需要查询查询,因为使用cfloop和cfoutput的查询循环可以指定开始和结束查询行。如果您这样做,我将缓存查询。这将使用更多的内存,并且第一个页面加载速度会较慢,但是在后续页面上加载速度会更快。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3364942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档