MySQL不是很慢

MySQL不是很慢,mysql,sql,select,notin,Mysql,Sql,Select,Notin,我希望有人能帮助我。这是SQL查询: 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 i

我希望有人能帮助我。这是SQL查询:

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);
我怎样才能使它更快

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
索引?

使用
存在
而不是
中的
?使用连接和适当的索引而不是子选择?哪个版本的MySQL?我不明白你的问题。您使用什么shell与数据库通信?phpMyAdmin?MySQL工作台?我需要查看这两个表的
CREATE TABLE
语句,因此转到SQL选项卡并运行命令:
SHOW CREATE TABLE pf_profilvisit
并在此处发布输出,在对
pf_mailbox
Hello重复相同操作后,我通过单击行上的“添加索引”将其修复。现在非常非常快!!!:)谢谢你,亚历克斯!!这似乎是OP当前解决方案的一个非常明智的替代方案。请考虑在你的答案中去掉问题。(你所问的关于指数的问题可以用建议的形式重新表述。)