首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

帮忙优化上sql语句

2013-02-04 
帮忙优化下sql语句signstationid,reachdatetime,signmachineid,cp是联合主键, 这是个分页的语句,才几千条

帮忙优化下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 很耗性能的

热点排行