gpt4 book ai didi

ruby-on-rails - rails add ordered, index or full 来加速查询

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:33 25 4
gpt4 key购买 nike

因此,我的 Rails 代码生成了一个巨大的连接查询,其开头如下:

SELECT "CREDITRSP"."ML_TRAN_ID"       AS t0_r0,
...
...
...

我注意到,当我在 sql developer 中运行它时,这大约需要 5 分钟。

尝试了以下替代方案,它们在 3-10 秒内返回了结果:

 1.SELECT /*+ FULL("CREDITRSP") */ "CREDITRSP"."ML_TRAN_ID" AS t0_r0,
...
...


2. SELECT /*+ INDEX("CREDITRSP" IDX2_CREDITRSP) */ "CREDITRSP"."ML_TRAN_ID" AS t0_r0,
...
...



3. SELECT /*+ ORDERED */ "CREDITRSP"."ML_TRAN_ID" AS t0_r0,
...
...

以上 3 个选项中的任何一个都可以在 rails 中实现吗?

注意:我无法控制修改、更新、表架构迁移。此应用程序对这些表只有只读访问权限。

这是现有模型代码的一部分。

class Search

def search_by_date_range
get_transactions(FILTER_TO_SEARCH[self.filter])
end

FILTER_TO_SEARCH = {
Filter::AllTran => {
:filter => "all_tran.between_dates(self.start_date, self.end_date)",
:models => [
"credit_responses"
]
}
}


def get_transactions(search_hash={})
if (filter = search_hash[:filter])
trans = []
search_hash[:models].each do |m|
trans += eval("Terminal.#{m}.#{filter}")
end
[trans, nil]
else
[false, "Incorrect Filter"]
end
end


class Terminal < Tv2g::Base
self.table_name = "terminal"


has_many :credit_responses
end

我正在使用 Rails 3 和“activerecord-oracle_enhanced-adapter”、“1.4.2”gem。

编辑:

这是我的示波器寻找特定型号的方式:

class CreditResponse 
self.table_name = "creditrsp"
has_one :transaction_code, :through => :credit_request


default_scope includes(:credit_request, :transaction_code)

最佳答案

您是否尝试修改 Rails 代码以指定 select 语句?

blah.blah.select('/*+ FULL("CREDITRSP") */ "CREDITRSP"."ML_TRAN_ID" AS t0_r0, ...').blah.blah

关于ruby-on-rails - rails add ordered, index or full 来加速查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30062666/

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