2015-05-11 7 views
1

Я надеюсь, что кто-то может мне помочь. SQL-запрос:MySQL не очень медленный

SELECT * 
FROM pf_profilvisit 
WHERE u1 = '".$user."' 
    AND u2 NOT IN (
     SELECT empf FROM pf_mailbox WHERE abs = '".$user."' 
    ) 
    AND u2 NOT IN (
     SELECT abs FROM pf_mailbox WHERE empf = '".$user."' 
    ) 
ORDER BY id DESC); 

Как это сделать быстрее?

+0

использует 'exists' вместо' in'? использовать комбинации и правильные индексы вместо подзапросов? –

+0

Какая версия MySQL? – Strawberry

ответ

1
SELECT pf_profilvisit.* 
FROM pf_profilvisit 
LEFT JOIN pf_mailbox 
ON pf_profilvisit.u2 = pf_mailbox.empf 
    OR pf_profilvisit.u2 = pf_mailbox.abs 
WHERE pf_profilvisit.u1 = '".$user."' 
    AND pf_mailbox.empf IS NULL 
    AND pf_mailbox.abs IS NULL 
ORDER BY pf_profilvisit.id DESC; 

Не могли бы вы показать схему таблиц? У вас есть столбцы pf_mailbo.abs, pf_mailbo.empf, pf_profilvisit .u1, pf_profilvisit.u2, pf_profilvisit.id с индексом?

+0

привет. Спасибо! если вы можете сказать мне, как это сделать? –

+0

Не понимаю ваш вопрос. Какую оболочку вы используете для связи с базой данных? PhpMyAdmin? MySQL Workbench? Мне нужно увидеть инструкцию 'CREATE TABLE' для обеих таблиц. – Alex

+0

Здравствуйте. я могу использовать phpmyadmin для редактирования :) –

Смежные вопросы