Ugu*_*zer 1 mysql sql phpmyadmin
执行下面的查询时面临"在查询期间丢失与MySQL服务器的连接"错误.我该怎么解决?
SELECT *
FROM firmalar,
musterisahipleri,
notlar
WHERE firmalar.firmaID NOT IN (
SELECT m2.firmaID
FROM notlar AS n2,
musterisahipleri AS m2
WHERE n2.eklemeTarihi > '2013-03-24'
)
AND musterisahipleri.firmaID = firmalar.firmaID
AND notlar.ilgiliID = musterisahipleri.userID;
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助
你正在超时,因为你使用效率低下的嵌套子查询.
这将表现得更好:
编辑:根据您的上次评论,此查询将返回自"2013-03-24"以来firmalar没有notlar添加记录的记录...然后将这些结果加入musterisahipleri并notlar再次获取相关的代表和备注(如果适用)
SELECT *
FROM (
SELECT f.*
FROM firmalar AS f
LEFT JOIN musterisahipleri AS m
ON m.firmaID = f.firmaID
LEFT JOIN notlar AS n
ON n.ilgiliID = m.userID
AND n.eklemeTarihi > '2013-03-24'
GROUP BY f.firmaID
HAVING MAX(n.ilgiliID) IS NULL
) AS f
LEFT JOIN musterisahipleri AS m
ON m.firmaID = f.firmaID
LEFT JOIN notlar AS n
ON n.ilgiliID = m.userID
Run Code Online (Sandbox Code Playgroud)
您还应该确保在要加入的列上有索引,例如
ALTER TABLE firmalar ADD INDEX (firmaID);
ALTER TABLE musterisahipleri ADD INDEX (firmaID);
ALTER TABLE musterisahipleri ADD INDEX (userID);
ALTER TABLE notlar ADD INDEX (ilgiliID);
Run Code Online (Sandbox Code Playgroud)