+ -
当前位置:首页 → 问答吧 → 精通sql优化的进,怎么把这条语句从in变成exist.

精通sql优化的进,怎么把这条语句从in变成exist.

时间:2011-09-06

来源:互联网

执行计划就不写了,索引该建的都建了,我的问题主要是如果把这个In语句改成exist,这个有点复杂,不会。
先谢谢各位高手了。

SELECT up.userid, up.realname, up.mobilephone, up.homephone
  from user_profile as up
where up.userid in (select user_id
                       from ecs_order_info
                      where pay_status = 2
                        and shipping_status > 0
                        and extension_id = 0
                     union
                     select user_id
                       from ecs_order_info_history
                      where pay_status = 2
                        and shipping_status > 0
                        and extension_id = 0
                      GROUP BY user_id)

[ 本帖最后由 wushi8 于 2011-9-6 11:30 编辑 ]

作者: wushi8   发布时间: 2011-09-06

SELECT   UP.userid,
         UP.realname,
         UP.mobilephone,
         UP.homephone
  FROM   user_profile UP
WHERE   EXISTS
            (SELECT   'x'
               FROM   (SELECT   user_id
                         FROM   ecs_order_info
                        WHERE       pay_status = 2
                                AND shipping_status > 0
                                AND extension_id = 0
                       UNION
                         SELECT   user_id
                           FROM   ecs_order_info_history
                          WHERE       pay_status = 2
                                  AND shipping_status > 0
                                  AND extension_id = 0
                       GROUP BY   user_id) t1
              WHERE   UP.userid = t1.userid);

作者: weiranth   发布时间: 2011-09-06

你这地方的group by没有意义

作者: 棉花糖ONE   发布时间: 2011-09-06

这和精不精通sql优化貌似没关系

作者: highnice   发布时间: 2011-09-06

非要转换成exsits么。

作者: Coast_lichao   发布时间: 2011-09-07

确实 group by 没必要,为啥ecs_order_info不用group by呢。

要么来个distinct试试

exsits还是有必要的,这样速度会快一些。

作者: happy8650   发布时间: 2011-09-07

热门下载

更多