gpt4 book ai didi

ruby-on-rails - 我如何找出在我的 Rails 应用程序中生成所有这些额外的 sqlite3 选择的位置?

转载 作者:IT王子 更新时间:2023-10-29 06:29:22 26 4
gpt4 key购买 nike

我试图弄清楚我的 Rails 应用程序在哪里生成了一大堆额外的查询。我需要一些关于如何解决它的想法。或者,如果有人可以给我一些提示,我将不胜感激。

我得到这些:

  SQL (1.0ms)    SELECT name
FROM sqlite_master
WHERE type = 'table' AND NOT name = 'sqlite_sequence'

SQL (0.8ms) SELECT name
FROM sqlite_master
WHERE type = 'table' AND NOT name = 'sqlite_sequence'

SQL (0.8ms) SELECT name
FROM sqlite_master
WHERE type = 'table' AND NOT name = 'sqlite_sequence'

在对数据库的每个请求上一遍又一遍地重复(单个请求多达 70 次)

我尝试安装一个追踪查询来源的插件,但它真的一点用都没有。我正在使用 hobofields gem,不知道是不是这样做的,但我现在有点执着于它

关于寻找这些额外查询的来源有什么技巧吗?

最佳答案

查看第 173 行 connection_adapters/sqlite_adapter.rb 中的 ActiveRecord gem(我使用的是 ActiveRecord 3.0.7),您有一个名为表的函数,它生成您发布的确切查询:

选择名称
来自 sqlite_master
WHERE type = 'table' 而不是 name = 'sqlite_sequence'

在开发模式下,这个函数会在每次请求时为数据库中的每个表调用。在生产环境中,这个函数只会在服务器启动时被调用一次,结果会被缓存。


在针对每个请求的开发中,rails 会查看您的数据库以查看每个表有哪些列,以便它可以在您的模型上生成方法,例如“find_by_name”。由于在生产环境中您的数据库不太可能发生变化,因此 Rails 仅在服务器启动时执行此查找。

关于ruby-on-rails - 我如何找出在我的 Rails 应用程序中生成所有这些额外的 sqlite3 选择的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2735374/

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