gpt4 book ai didi

sql - 什么时候放弃事件记录?

转载 作者:数据小太阳 更新时间:2023-10-29 08:14:42 24 4
gpt4 key购买 nike

我不是 Rails 的新手,但到目前为止我还没有做过如此复杂的事情,所以我很好奇更有经验的 Rails 开发人员可能会分享什么:

我有一个 sql 查询,它将 4 个左右的表连接到一个输出中:

SELECT places.id, places.name, places.email, places.website, places.blurb, external_ratings.rating, photos.data_file_name
FROM `scannables`
INNER JOIN places ON scannables.place_id = places.id
INNER JOIN locations ON places.location_id = locations.id
LEFT JOIN external_ratings ON scannables.place_id = external_ratings.place_id
LEFT JOIN photos ON scannables.place_id = photos.place_id
WHERE locations.id = 2474 AND scannables.bookdate BETWEEN '2009-08-29' and date_add('2009-08-29', INTERVAL 4 DAY)
GROUP BY scannables.place_id
HAVING SUM(scannables.available) >= 4
ORDER BY SUM(scannables.available) DESC, external_ratings.rating DESC

我在各种模型中定义了所有表关系,最初只使用这些定义的关系(使用事件记录)提取各种数据并且它工作正常,除了最大的主查询非常慢,执行多重独立查询。我的问题是,在这种情况下我应该转储 Active Record 并使用 find_by_sql ......还是我遗漏了什么?

什么是 Rails 方式?

谢谢

最佳答案

务实比担心保持“Rails 纯度”更重要。我喜欢命名范围、关联以及它们所带来的所有魔力。当然,与运行原始 SQL 查询相比,我更喜欢那些。但是,如果复杂的查询需要 find_by_sql,那么我会毫不犹豫地使用它。

如果您需要支持多个数据库,那么您可能希望将其硬塞进纯 Rails 方法中,但这种要求很少见。

关于sql - 什么时候放弃事件记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1351951/

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