【问题标题】:Why is Rails adding an ORDER BY on my ActiveRecord queries?为什么 Rails 在我的 ActiveRecord 查询中添加 ORDER BY?
【发布时间】:2016-09-22 01:49:54
【问题描述】:

我在我的应用程序中使用tiny_tdsactiverecord-sqlserver-adapter gems。每次我调用查询时,它都会在末尾添加ORDER BY [object].[id]

示例 School.limit(15)

EXEC sp_executesql N'SELECT [schools].* FROM [schools] WHERE [schools].[is_all_star_team] = 0 ORDER BY [schools].[id] ASC OFFSET 0 ROWS FETCH NEXT 15 ROWS ONLY'

当通过 SSMS 测试我的查询时,无论是否使用 order by,在完成时间上似乎都有很大的不同。我不确定如何在不需要时将其删除。

【问题讨论】:

    标签: ruby-on-rails sql-server activerecord tiny-tds


    【解决方案1】:

    您是否碰巧在 School 模型上设置了默认范围?如果是这样,这可能是罪魁祸首,因为它将应用于所有 ActiveRecord 调用,甚至是像 limit 这样的简单调用。

    【讨论】:

    • 我愿意,有没有办法在不添加订单的情况下拥有默认范围?
    • 您的默认作用域中是否有订单方法调用?如果是这样,您可以执行以下操作: School.unscoped.limit(15) 以忽略调用的范围。 Here's a link to the docs on unscoped
    猜你喜欢
    • 2021-12-22
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    相关资源
    最近更新 更多