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

请大家看看,上面的语句有没有可以优化的地方,感觉速度很慢

2013-01-02 
请大家看看,下面的语句有没有可以优化的地方,感觉速度很慢SELECT(SELECTParentIDFROMstableWHERE(cpid a

请大家看看,下面的语句有没有可以优化的地方,感觉速度很慢


SELECT     (SELECT     ParentID
                       FROM          stable
                       WHERE      (cpid = a.cpid)) AS ParentID, cpid, CONVERT(varchar(10), doTime, 120) AS rq,
                          (SELECT     TOP (1) doTime
                            FROM          t_table
                            WHERE      (cpid = a.cpid) AND (CONVERT(varchar(10), doTime, 120) = CONVERT(varchar(10), a.doTime, 120)) AND (CONVERT(varchar(8), doTime, 24) 
                                                   BETWEEN '00:00:00' AND '03:59:59')
                            ORDER BY dtp) AS T0_4,
                          (SELECT     TOP (1) doTime
                            FROM          t_table AS  t_table_5
                            WHERE      (cpid = a.cpid) AND (CONVERT(varchar(10), doTime, 120) = CONVERT(varchar(10), a.doTime, 120)) AND (CONVERT(varchar(8), doTime, 24) 
                                                   BETWEEN '04:00:00' AND '07:59:59')
                            ORDER BY dtp) AS T4_8,
                          (SELECT     TOP (1) doTime
                            FROM          t_table AS  t_table_4


                            WHERE      (cpid = a.cpid) AND (CONVERT(varchar(10), doTime, 120) = CONVERT(varchar(10), a.doTime, 120)) AND (CONVERT(varchar(8), doTime, 24) 
                                                   BETWEEN '08:00:00' AND '11:59:59')
                            ORDER BY dtp) AS T8_12,
                          (SELECT     TOP (1) doTime
                            FROM          t_table AS  t_table_3
                            WHERE      (cpid = a.cpid) AND (CONVERT(varchar(10), doTime, 120) = CONVERT(varchar(10), a.doTime, 120)) AND (CONVERT(varchar(8), doTime, 24) 
                                                   BETWEEN '12:00:00' AND '15:59:59')
                            ORDER BY dtp) AS T12_16,
                          (SELECT     TOP (1) doTime
                            FROM          t_table AS  t_table_2
                            WHERE      (cpid = a.cpid) AND (CONVERT(varchar(10), doTime, 120) = CONVERT(varchar(10), a.doTime, 120)) AND (CONVERT(varchar(8), doTime, 24) 
                                                   BETWEEN '16:00:00' AND '19:59:59')
                            ORDER BY dtp) AS T16_20,
                          (SELECT     TOP (1) doTime


                            FROM          t_table AS  t_table_1
                            WHERE      (cpid = a.cpid) AND (CONVERT(varchar(10), doTime, 120) = CONVERT(varchar(10), a.doTime, 120)) AND (CONVERT(varchar(8), doTime, 24) 
                                                   BETWEEN '20:00:00' AND '23:59:59')
                            ORDER BY dtp) AS T20_24
FROM         t_table AS a
GROUP BY cpid, CONVERT(varchar(10), doTime, 120)



需要在stable 和t_table上进行相关操作么
[解决办法]
太多子查询了   建议把一些子查询分出来使用临时表分布处理
[解决办法]
把执行计划贴出来

热点排行