проблема с запросом

maks32

Новичок
проблема с запросом

SELECT cu.ecard_remail as email, IF(cu.ecard_read=1,'true','false') as active
FROM card_user cu LEFT JOIN dc_emails e ON cu.ecard_remail=e.email
WHERE e.email IS NULL
GROUP BY cu.ecard_remail

1. запрос не исполняется, но и не выдает ошибку
2. после запуска запроса таблица card_user не доступна, т.е. как мне кажется оно занята каким-то процессом.

card_user - 160000 записей

подскажите пожлуйста в чем проблема?
 

4m@t!c

Александр
>1. запрос не исполняется, но и не выдает ошибку
но хоть что-то происходит?

>2. после запуска запроса таблица card_user не доступна, т.е. как мне кажется оно занята каким-то процессом.
Что думает по этому поводу SHOW PROCESSLIST?
 

maks32

Новичок
Автор оригинала: 4m@t!c
>1. запрос не исполняется, но и не выдает ошибку
но хоть что-то происходит?
не чего, запускаю через phpMyAdmin, грузится, ответа дождаться не удалось...

>2. после запуска запроса таблица card_user не доступна, т.е. как мне кажется оно занята каким-то процессом.
Что думает по этому поводу SHOW PROCESSLIST?
SHOW PROCESSLIST - запрос в состоянии "Copying to tmp table"

что делать? может нужно увеличить tmp_table_size?
 

WP

^_^
А чего ты хочешь сделать?
IF(cu.ecard_read=1,'true','false') as active
Зачем?
 

maks32

Новичок
Автор оригинала: WP
А чего ты хочешь сделать?
IF(cu.ecard_read=1,'true','false') as active
Зачем?
ecard_read - значение 0 или 1, я хочу получить true или false

это сильно влияет на время выполнения запроса?
 

WP

^_^
До меня только начало доходить Дао твоего запроса
SELECT cu.ecard_remail as email, IF(cu.ecard_read=1,'true','false') as active
FROM card_user cu LEFT JOIN dc_emails e ON cu.ecard_remail=e.email
WHERE e.email IS NULL
GROUP BY cu.ecard_remail
Бредовый какой-то... Зачем джойнить по значению которое NULL? В результате будет до жопы рядов.
 

maks32

Новичок
Автор оригинала: WP
До меня только начало доходить Дао твоего запроса
SELECT cu.ecard_remail as email, IF(cu.ecard_read=1,'true','false') as active
FROM card_user cu LEFT JOIN dc_emails e ON cu.ecard_remail=e.email
WHERE e.email IS NULL
GROUP BY cu.ecard_remail
Бредовый какой-то... Зачем джойнить по значению которое NULL? В результате будет до жопы рядов.
цель запоса из таблицы card_user выбрать уникальные адресса (ecard_remail), которых еще нет в таблице dc_emails т.е. (e.email IS NULL)

В чем бредовость запроса - обоснуй?
 

4m@t!c

Александр
EXPLAIN запроса и структуры объеденяемых таблиц выложите, пожалуйста.
 

maks32

Новичок
Автор оригинала: 4m@t!c
EXPLAIN запроса и структуры объеденяемых таблиц выложите, пожалуйста.
да я вроде проблему решил, индекс добавил и заработало...


спасибо за помощь
 
Сверху