gpt4 book ai didi

mysql - 如何在不使用 Rails 4 和 MySQL 运行两次的情况下执行查询并获取元素总数

转载 作者:行者123 更新时间:2023-11-29 06:20:00 25 4
gpt4 key购买 nike

我在 MySQL 和 Rails 中运行成本时间查询。此查询是动态创建的,它还使用 LIMITOFFSET 管理分页。这是一个总结示例:

SELECT fields
FROM tables
WHERE conditions
ORDER BY order DESC LIMIT ? OFFSET ?

我还想获得元素的总数,但出于性能目的我想避免运行查询两次。我不认为这是可能的,但也许你让我感到惊讶 :)

目前,我有类似的东西:

objects = Object.find_by_sql(query)    
totalCount = objects.count

但是,当然,这总是返回限制计数。

最佳答案

因为您使用的是分页和偏移,所以您不会获得完整的结果。您可以运行两个单独的查询,也可以提取完整的数据集,然后进行分页过滤。第一个选项可能会更快,尤其是随着数据集的增长。

要提高性能,您可以在各个点查看缓存策略以获得更好的结果。在不知道数据何时更改的情况下,我无法提供任何具体建议。

编辑 1:展开说明

这可能有助于解释为什么会这样。当您手动设置限制和偏移量时,Rails 对查询未返回的数据一无所知。因此,如果没有可用的数据,就不可能让 Rails 知道总数。

就是说,一个简单的 COUNT 聚合应该总是非常快速地执行。如果您在执行该查询时发现速度问题,您需要确保您拥有正确的索引,并且 Rails 正在以最佳格式呈现条件。

关于mysql - 如何在不使用 Rails 4 和 MySQL 运行两次的情况下执行查询并获取元素总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33764223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com