【发布时间】:2020-05-13 01:58:57
【问题描述】:
我正在 ruby on rails 中实现过滤逻辑,用户可以在其中过滤与 OR 运算符结合的记录。所以我检查了在 active record 中实现 OR 的方式,因为我们在 rails 5,我们有 or method 来组合条件。
当使用 OR 方法时,我得到如下查询,
SELECT "users".*
FROM "users"
WHERE (
(
(
"users"."first_name" ILIKE '%name1%' OR "users"."last_name" ILIKE '%name2%'
)
OR
"users"."email" ILIKE '%email%'
)
OR (
"users"."email" ILIKE '%email%'
)
);
查询构建类似于Model.where((((A OR B) OR C) OR D))。我们使用 Postgres 作为数据库。
我的疑问是 (((A OR B) OR C) OR D) 和 (A OR B OR C OR D) 在 Postgres 中是否相等?这两者之间是否有任何性能差异。
注意:我检查了由Ransack advanced search 构造的查询,以(((A OR B) OR C) OR D) 格式构造的查询。
【问题讨论】:
标签: ruby-on-rails postgresql activerecord ruby-on-rails-5 where-clause