有什么方法可以防止 ActiveRecord 在不需要时向数据库发出 SHOW FIELDS 信息?
我正在研究数据库性能关键应用程序,只是注意到在一个典型的查询中,我的 SELECT 需要 0.5 毫秒,而相关的 SHOW FIELDS 需要 2 毫秒——长 4 倍!更重要的是,它不需要,因为我已经指定了我想要检索的唯一列:UsersAddress.find(:all, :conditions => {:user_id => 1}, :select => :address_id)
UsersAddress Load (0.5ms) SELECT address_id FROM
users_addresses
WHERE (users_addresses
.user_id
= 1)UsersAddress Columns (2.1ms) SHOW FIELDS FROM
users_addresses
当然,这只会在每次第一次触摸某个表时发生一次,但它不应该是完全可以避免的吗?首先,该信息已经在我的架构中。第二,我不需要。
任何想法如何优化它,以便 Rails 不会运行 SHOW FIELDS,除非它真的需要它?
谢谢!
最佳答案
在生产模式下,它只会在启动服务器后加载一次(不是每个请求)。
在开发模式下,它会在每个请求上加载(因为它是开发模式,并且几乎每个请求都会重新启动所有内容)
所以你不必在生产模式下担心它。
关于ruby-on-rails - 避免在 ActiveRecord 中显示字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1940654/