gpt4 book ai didi

sql - 我怎样才能以更高效的方式编写此代码?

转载 作者:行者123 更新时间:2023-12-04 17:37:31 28 4
gpt4 key购买 nike

在我们的应用程序中,人们有 1 个或多个项目。这些项目有开始和结束日期。人们的可用天数是有限的。

现在我们有一个页面,每周显示给定人员的可用性。目前显示为 18 周。

我们目前计算给定周的可用时间的方式是这样的:

def days_available(query_date=Date.today)
days_engaged = projects.current.where("start_date < ? AND finish_date > ?", query_date, query_date).sum(:days_on_project)
available = days_total - hours_engaged
end

这意味着要显示上面描述的页面,应用程序将向数据库发出 18 个(!)查询。我们有一些页面在一个表格中列出了多人的可用性。对于这些页面,查询量很快变得惊人。

它也很慢。

我们如何以更高效的方式处理可用性检索?

最佳答案

在实体中处理日期范围时,这是一种非常常见的情况。简单快捷的方法是在 SQL 中:

将您的事件连接到一个数字生成的日期表(请参阅 generate days from date range ),以便您每天都有一个人或多人被占用的行。一旦您拥有这种形式的数据,只需按日期的周日期部分进行分组并计算每个分组的行数即可。

您可以将此扩展为按人分组以进行多人查询。

关于sql - 我怎样才能以更高效的方式编写此代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13886417/

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