Встречается на собеседованиях • сегодня

Какие условия нельзя делать в where

В SQL (и в ORM типа Django ORM или SQLAlchemy) есть несколько условий, которые не стоит использовать в WHERE:

  1. Функции над колонками – например, WHERE LOWER(column) = 'value' не использует индекс. Лучше хранить данные в нужном регистре.
  1. Не-SARGable условия – например, WHERE column LIKE '%substring%' (ведущий %). Используйте LIKE 'substring%' для индексов.

  2. Сравнение разных типов – например, WHERE string_column = 123 может привести к неявному приведению типов и плохой производительности.

  3. OR с разными колонкамиWHERE col1 = 'x' OR col2 = 'y' часто хуже, чем два отдельных запроса с UNION ALL.

Пример плохого условия:

sql
SELECT * FROM users WHERE DATE(created_at) = '2023-01-01';

Лучше:

sql
SELECT * FROM users 
WHERE created_at >= '2023-01-01' AND created_at < '2023-01-02';
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы