Я использую логику фильтра в ruby на рельсах, где пользователь может фильтровать записи в сочетании с оператором ИЛИ . Поэтому я проверил способ реализации ИЛИ в активной записи , и, поскольку мы находимся в рельсах 5, у нас есть или метод для объединения условий.
При использовании метода 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 , запрос, построенный в формате (((A OR B) OR C) OR D)
.