Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Какой из запросов лучше?, not exist / left join ... is null
Alex_r  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 22
Пользователь №: 41652
На форуме: 1 год, 9 месяцев, 28 дней
Карма:




Всем привет. Хочу услышать мнения опытных людей, какой из абсолютно одинаковых запросов лучше?

SELECT a.`client_bid_id`
FROM `client_bid` a
WHERE a.`client_bid_blocked` = 'n'
AND NOT EXISTS
(
SELECT 1
FROM `client_login` b
WHERE b.`client_id` = a.`client_id`
AND b.`client_login_type` = 'success'
AND b.`client_login_date` > NOW() - INTERVAL 1 HOUR
)

SELECT a.`client_bid_id`
FROM `client_bid` a
LEFT JOIN `client_login` b ON (b.`client_id` = a.`client_id` AND b.`client_login_type` = 'success' AND b.`client_login_date` > NOW() - INTERVAL 1 HOUR)
WHERE a.`client_bid_blocked` = 'n'
AND b.`client_id` IS NULL

Прочитал довольно много, но так и не решил для себя - в каких случаях лучше not exits, а в каких - left join ... is null.

not in у меня сразу отпал, как самый худший.

План первого запроса:

"id"	"select_type"	"table"	"type"	"possible_keys"	"key"	"key_len"	"ref"	"rows"	"Extra"
"1" "PRIMARY" "a" "ALL" \N \N \N \N "12" "Using where"
"2" "DEPENDENT SUBQUERY" "b" "ALL" \N \N \N \N "1" "Using where"

План второго запроса:

"id"	"select_type"	"table"	"type"	"possible_keys"	"key"	"key_len"	"ref"	"rows"	"Extra"
"1" "SIMPLE" "a" "ALL" \N \N \N \N "12" "Using where"
"1" "SIMPLE" "b" "ALL" \N \N \N \N "1" "Using where; Not exists; Using join buffer (Block Nested Loop)"

Индексы я пока не применял, меня другое интересует.


--------------------
Сервис Депозитка - Ваш депозитный помощник
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса