MySQL LEFT JOIN и NULL - PullRequest
       25

MySQL LEFT JOIN и NULL

2 голосов
/ 07 марта 2012

У меня есть запрос, который выглядит так:

SELECT * 
FROM table_a
LEFT JOIN table_b ON table_a.id_a = table_b.id_a
WHERE
table_b.field = 'something' OR table_b.field IS NULL

я хочу иметь записи с таблицей table_b.field = 'что-то' или те, в которых нет записи в table_b для строки в table_a. Когда я добавляю значение IS NULL, выполнение запроса занимает около 60 секунд против 0,4 секунд без него.

Кто-нибудь может объяснить это поведение? я думаю, что IS NULL отрицает некоторую оптимизацию, но я не совсем уверен.

1 Ответ

1 голос
/ 07 марта 2012

у вас есть индекс по полю в Table_b?Если он входит в составной индекс, убедитесь, что он первый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...