我有一个postgresql 9.4专栏' deal_status'。
在交易创建(模型)上,我必须决定属性/列' deal_status'在以下两个选项之间:
要么什么也不做,让值为null(或为空,不确定当我们什么都不说时Rails会发生什么)。当用户进行交易时,我会将值从NULL更改为字符串(' deal_taken')
或者在列中添加默认值' deal_not_yet_taken'。当用户进行交易时,我会将字符串(' deal_not_yet_taken')中的值更改为另一个字符串(' deal_taken')
我有非常多的行,所以我正在调查更多的表现。
我有一个名为' show_deals_available'涉及postgresql查询我试图优化性能,因为它会发生很多:
对于postgresql来说,当它执行"时,它是最好/最快/最有效的。以下查询:
1。选项1:创建交易时不给予deal_status属性的任何默认值(因此它将具有值:NULL值);并查询如下:
控制器/ deals_controller.rb
def show_deals_available
@deal = Deal.friendly.find params[:id]
@available_deal = Deal.where('deal_id = ? AND deal_status is NULL',
@deal.id).first
respond_to do |format|
format.js
end
end
2。选项2:创建交易时将STRING 设为默认值:' deal_not_yet_taken&#39 ;;并进行以下查询:
控制器/ deals.rb
def show_deals_available
@deal = Deal.friendly.find params[:id]
@available_deal = Deal.where('deal_id = ? AND deal_status = ?',
@deal.id, "deal_not_yet_taken").first
respond_to do |format|
format.js
end
end
另外,也许答案似乎更复杂。事实上,上述2个选项之间的选择也可能受到WRITE的影响:当我必须将值更改为' deal_taken'时,将表单字符串更改为另一个字符串与更改表单相比到一个字符串?
请注意,我正在使用活动记录但问题仍然适用于postgresql(我将来可能会切换到原始的postgresql)。