Бази даних · Senior · Запитання 53 з 75
Чому запит з OR по різних стовпцях може бути повільним і що допоможе?
SELECT * FROM users WHERE email = $1 OR phone = $2;- 1
ORзавжди змушує повне сканування таблиці незалежно від індексів - ✓Правильна відповідь: Один індекс не обслуговує обидві умови; PostgreSQL може використати bitmap OR двох індексів, або перепишіть через
UNION - 3
ORзаборонений уWHERE
Пояснення
З індексами на обох стовпцях BitmapOr їх поєднує. Без одного з них планувальник повертається до сканування таблиці.