gpt4 book ai didi

sql - Rails - find_by_sql 与事件记录查询

转载 作者:行者123 更新时间:2023-12-04 18:26:33 29 4
gpt4 key购买 nike

我想使用 find_by_sql 方法代替事件记录查询接口(interface),因为我在编写自己的 SQL 时获得了灵 active 。

例如,

  1. 在 SQL 中将查询中的表从小到大排序被认为是一种很好的做法。使用事件记录查询界面时,您必须从可能是最大表的结果模型开始。

  2. 我还可以通过将目标表包含在连接本身中并包含来自多个表的所需列来轻松避免 N+1 问题。

    我想知道是否有我不应该使用 find_by_sql 选项的原因,尤其是当我将编写应该与所有(如果不是大多数)数据库兼容的 ANSI SQL 时。

谢谢!

最佳答案

通常不鼓励直接编写 SQL 代码,因为它会阻止您访问 SQL 查询的延迟执行等功能,并可能导致无效或不安全的查询。

实际上,ActiveRecord 会自动将 Ruby 对象转换为相应的 SQL 语句(例如将范围转换为 BETWEEN 或将数组转换为 IN),过滤来自 SQL 注入(inject)的字符串,并且 ActiveRecord::Relations 提供惰性查询执行。

也就是说,如果您知道自己在做什么或使用 ActiveRecord 来实现特定的查询会非常复杂,那么编写您的 SQL 并没有错。

我的建议是避免对在 ActiveRecord 和 AREL 中可以轻松复制的查询执行此操作。

关于sql - Rails - find_by_sql 与事件记录查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20962022/

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