如果我们使用first_or_initialize / first_or_create在rails中构建一个对象(具有所有属性),我们是否需要索引db中的所有属性以提高性能?
答案 0 :(得分:0)
您不需要或不想要所有属性的索引 - 事实上,太多的索引会降低您的应用程序速度,因为数据库在插入/更新时必须重做所有索引。
相反,您需要在查询中常用的id
等关键属性上使用索引。
如果你想使用find或create并确保查询是高效的,你可以这样做:
@user = User.create_with(user_params)
.first_or_create(user_params[:email])
在此示例中,您需要users.email
列上的索引。
正如@Andrew Piliser所指出的,如果你传递一个id,它只会使用id
列来查找记录是否存在。