性能影响.. 查询 运行 太长

Performance impact.. query running too long

我已经编写了以下查询,但是 运行 太长了..我该如何优化它?谁能知道如何在不使用不存在逻辑的情况下重写此逻辑?

SELECT s.sid
FROM book s
WHERE active    =1
AND (read_only IS NULL
OR read_only    = 0)
AND cdate      IS NULL
AND NOT EXISTS
  (SELECT 1
  FROM contract con
  WHERE ((con.pid=s.sid)
  OR (con.bsid   =s.sid)
  OR (con.ssid   =s.sid)
  AND (con.cosid <5))
  )
AND NOT EXISTS
  (SELECT 1 FROM pns WHERE staid=2 AND pns.abid=s.sid
  )
AND NOT EXISTS
  (SELECT 1 FROM contract_ct WHERE contract_ct.cpid=s.sid
  )
AND NOT EXISTS
  (SELECT 1 FROM cosa WHERE cosa.csid=s.sid
  );  

我想你弄错了括号。

AND NOT EXISTS
  (SELECT 1
  FROM contract con
  WHERE ((con.pid=s.sid)
  OR (con.bsid   =s.sid)
  OR (con.ssid   =s.sid)
  AND (con.cosid <5))
  )

你不是说-

and not exists
    (
        select      1
        from        contract con
        where       (    con.pid  = s.sid
                      or con.bsid = s.sid
                      or con.ssid = s.sid
                    )
                and con.cosid < 5
    )