File tree Expand file tree Collapse file tree 1 file changed +23
-0
lines changed Expand file tree Collapse file tree 1 file changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -692,3 +692,26 @@ delete from vacancy_skills where vacancy_id = 30923954 and skill_id = 530280;
692692select * from vacancy_modified;
693693```
694694
695+ # Как решить проблему с неэффективным планом запросов из-за OR с разными колонками
696+
697+ У PostgreSQL есть проблема с неэффективным планом запросов с OR из разных колонок. Но есть обходной путь через UNION ALL.
698+
699+ Было
700+ ``` sql
701+ select *
702+ from t
703+ where t .a > 0
704+ or t .b < 0 ;
705+ ```
706+
707+ Стало (все условия OR переписываем через несколько SELECT запросов, объединяя их через UNION ALL)
708+ ``` sql
709+ select *
710+ from t
711+ where t .a > 0
712+ union all
713+ select *
714+ from t
715+ where t .b < 0
716+ ```
717+ Это применимо как в основном запросе, так и в подзапросах.
You can’t perform that action at this time.
0 commit comments