SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 04.08.2015 14:15:06

SemenV
Участник
Зарегистрирован: 04.08.2015
Сообщений: 2

Оптимизация NOT IN

Здравствуйте, уважаемые форумчане.
Помогите пожалуйста оптимизировать запрос.

Есть 2 таблицы offers и stats, Нужно из таблицы offers вывести имена которые не встречаются в таблице stats со статусами found и complet

Написал запрос с помощью NOT IN но он очень долго отрабатывает, в таблице более 600К записей.

SELECT offers.name FROM `offers` WHERE status="active" and activ="1" AND name NOT IN (SELECT name FROM stats WHERE userId="5668" AND (status="found" OR status="complet"))

Неактивен

 

#2 05.08.2015 12:36:05

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5840

Re: Оптимизация NOT IN

SELECT offers.name FROM `offers` o LEFT JOIN (SELECT name FROM stats WHERE userId="5668" AND (status="found" OR status="complet")) t USING(name) WHERE o.status="active" and o.activ="1" AND t.name IS NULL;
 

Неактивен

 

#3 05.08.2015 19:55:12

SemenV
Участник
Зарегистрирован: 04.08.2015
Сообщений: 2

Re: Оптимизация NOT IN

vasya написал:

SELECT offers.name FROM `offers` o LEFT JOIN (SELECT name FROM stats WHERE userId="5668" AND (status="found" OR status="complet")) t USING(name) WHERE o.status="active" and o.activ="1" AND t.name IS NULL;
 

Огромное спасибо!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson