【发布时间】:2009-03-16 23:10:34
【问题描述】:
所以这里有一个简单的问题。我正在使用带有庞大遗留数据库的 Rails,它有许多损坏的外键需要被视为 nil。
所以当我这样做时: Foo.find(:all, :conditions => {...}, :include => :bar)
使用 SELECT * FROM 条 WHERE id IN (...) 连接所有条的 Rails。到目前为止一切顺利,只有两个 sql 查询。
现在的问题是,对于损坏的 fks,当我稍后尝试执行 foo.bar 时,Rails 尝试使用 SELECT * FROM bar WHERE id = broken_id 重新获取 bar。然后它返回 nil(对我来说是正确的),但是所有这些 SELECT id= 都变成了一个主要的性能问题,因为它用太多的 sql 查询轰炸了 mysql。
有什么简单的方法可以检查 foo.bar 是否已经设置,并且不只是强制它为零?
【问题讨论】:
标签: ruby-on-rails activerecord