帮忙优化下sql语句
signstationid,reachdatetime,signmachineid,cp是联合主键, 这是个分页的语句,才几千条数据,在数据库中查询居然要10秒,请大家帮忙优化下.
SELECT TOP 10 *
FROM (SELECT t1.signstationid,
t1.reachdatetime,
t1.signmachineid,
t1.cp,
t1.direction,
t1.imageindex,
t1.isupload,
t1.vehiclecount,
t1.vehiclespeed,
t1.lanenum,
t1.iscorrect,
t1.vehiclelenth,
t1.vehicletype,
t2.signstationname,
t3.signmachinename,
t3.signmachineip
FROM cpvehiclepass t1
LEFT JOIN (SELECT signstationid,
signstationname
FROM signstation) t2
ON t1.signstationid = t2.signstationid
LEFT JOIN (SELECT signmachineid,
signmachinename,
signstationid,
signmachineip
FROM signmachine) t3
ON t1.signmachineid = t3.signmachineid
AND t2.signstationid = t1.signstationid) t4
WHERE (CONVERT(VARCHAR(100),t4.reachdatetime,120)
+ t4.signstationid
+ t4.signmachineid
+ t4.cp) NOT IN (SELECT TOP 3660 (CONVERT(VARCHAR(100),t5.reachdatetime,120)
+ t5.signstationid
+ t5.signmachineid
+ t5.cp)
FROM (SELECT t1.signstationid,
t1.reachdatetime,
t1.signmachineid,
t1.cp,
t1.direction,
t1.imageindex,
t1.isupload,
t1.vehiclecount,
t1.vehiclespeed,
t1.lanenum,
t1.iscorrect,
t1.vehiclelenth,
t1.vehicletype,
t2.signstationname,
t3.signmachinename,
t3.signmachineip
FROM cpvehiclepass t1
LEFT JOIN (SELECT signstationid,
signstationname
FROM signstation) t2
ON t1.signstationid = t2.signstationid
LEFT JOIN (SELECT signmachineid,
signmachinename,
signstationid,
signmachineip
FROM signmachine) t3
ON t1.signmachineid = t3.signmachineid
AND t2.signstationid = t1.signstationid) t5
ORDER BY t5.reachdatetime ASC)
ORDER BY reachdatetime ASC 优化 sql 数据库
[解决办法]
最好不要用not in
[解决办法]
Top 加 Order By 很耗性能的