从创建之前移动到PostgreSql触发器?

从创建之前移动到PostgreSql触发器?,sql,ruby-on-rails,postgresql,Sql,Ruby On Rails,Postgresql,我们有这样的模型,在创建触发器之前: def set_location_id self.location_id = Location.find_by(code: location_code).id end def set_product_id self.product_id = Product.find_by(code: product_code).id end 您认为将这些rails触发器移动到PostgreSql是一个好主意吗 性能如何?使用PostgreSQL的after或be

我们有这样的模型,在创建触发器之前:

def set_location_id
  self.location_id = Location.find_by(code: location_code).id
end

def set_product_id
  self.product_id = Product.find_by(code: product_code).id
end
您认为将这些rails触发器移动到PostgreSql是一个好主意吗


性能如何?

使用PostgreSQL的after或before insert触发器肯定比Ruby(activerecord)创建之前更快、更高效。但是你的代码会变得很难维护。现在,您的软件业务逻辑将位于两个不同的位置 1) 在rails应用程序中存储过程 2) 在rails模型中


拥有两个不同的位置将使将来调试和编程变得困难

我将告诉您一些我目前采用的关于性能优化的规则:

  • 必须时,始终进行性能优化
  • 只有在必要时才进行性能优化
  • 始终确保在真实数据上测量性能,从而获得所需的性能改进
  • 现在分别考虑:

  • 据我所知,您不需要这样的性能优化
  • 据我所知,您不需要这样的性能优化
  • @Coderhs在中理所当然地认为您的性能会有所提高。我的经验告诉我,假设的基准测试结果往往与实际结果不符,有时甚至会导致性能下降。因此,我建议你1)确定期望的绩效改进2)衡量它。因为据我所知,您不需要这样的性能优化,所以您可能应该花时间实现一个功能或修复一个bug,或重构;)