Я пытаюсь сделать простой SQL-запрос:Улучшения запроса
SELECT DISTINCT id
FROM marketing
WHERE type = 'email'
AND id NOT IN (
SELECT id
FROM marketing
WHERE type = 'letter'
)
ORDER BY id;
Это занимает очень много времени, чтобы бежать, и я предполагаю, что он должен делать с выбором в где заявлении (Есть целые большое количество идентификаторов), но я не могу придумать способ улучшить его.
Во-первых, это может быть причиной столь медленного запроса, и во-вторых, любое предложение о том, как его улучшить?
Edit:
системы баз данных: MySql
Id индексируется, но, но не является первичным ключом в таблице; это внешний ключ.
Насколько велика ваша таблица и «тип» имеет ли она индекс? – nacholibre
'WHERE type = 'email'' и 'WHERE type = 'letter'' кажется излишним. Вы в основном сказали, что тип должен быть «электронной почтой», но затем дважды проверьте, что это не «письмо». Вы не можете просто вынуть вложенный SELECT? –
Весь бит 'not in' кажется излишним. Если вы нашли запись с 'type = 'email'', то как она может быть в списке записей с типом = буквой? –