根据存储的变量设置边界?

时间:2013-12-26 19:40:29

标签: php mysql sql database

在我的数据库中,有一个名为comments的字段,其中显示帖子中有多少条评论。到目前为止,我在检索所有评论时一直使用LIMIT具有特定金额,但我担心如果这是一个很快添加/删除评论的热门帖子,可能会导致不准确。

我的问题是,在检索评论时,让我们说,是一个上边界好用吗?网站只查询整个表吗?我使用LIMIT,因为我认为它会更有效率,但是真的有区别吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以使用30查询第一个LIMIT条评论(比方说),以及使用COUNT查询属于您帖子的评论总数。现在,根据该计数建立分页链接。

现在,只要用户点击页码n,就可以使用AJAX获取新评论并替换现有评论。为此,请使用LIMITOFFSET

通过这种方式,您无需一次性提取该帖子的所有评论,同时,如果他们需要阅读更多信息,则可以为您的用户提供所需的评论。

最受欢迎的网站,我认为WordPress也使用此流程。


<强>更新

如果您使用的是load more类,则无需运行COUNT查询。只需加载前30个注释,并使用基于ajax的解决方案来获取接下来的30个查询,然后冲洗并重复,除非sql返回空结果。

在每个ajax请求中,偏移量应增加30(在本例中),但每次限制应保持在30

答案 1 :(得分:0)

您可以使用SQL_CALC_FOUND_ROWSFOUND_ROWS()代替存储评论数量。

select语句示例:

SELECT SQL_CALC_FOUND_ROWS *
FROM comments
WHERE post_id = ?
ORDER BY id DESC
LIMIT 0, 10

当您运行此查询时,您将收到您的评论,并在该运行查询之后:

SELECT FOUND_ROWS()

将返回上一次查询中没有LIMIT的注释数。