with as 语句对性能的提示有多大?

来源:互联网 发布:试衣软件app 编辑:程序博客网 时间:2024/05/01 10:35

    今天学习了数据库with as 子查询的用法,在网上查找资料说用这个用法对性能有一定的提升。

    所以我做了下面的一个示例:

  (1)

   select * from zwkmzd2013 where zwkmzd_kmbh in (select zwpzfl_kmbh from zwpzfl2013)

   union all 

   select * from zwkmzd2014 where zwkmzd_kmbh in (select zwpzfl_kmbh from zwpzfl2013)


  (2)
   with 
   temp_dwbh as
   (
     select zwpzfl_kmbh from zwpzfl2013
   )
   select * from zwkmzd2013 where zwkmzd_kmbh in(select * from temp_dwbh)
   union all

   select * from zwkmzd2014 where zwkmzd_kmbh in(select * from temp_dwbh)

我的理解是这样的, 第(1)个sql语句会对 zwpzfl2013这个表检索两次。第(2)个sql语句因为在查询语句前已经对zwpzfl2013进行了一次预查询,所以只进行了一次查询。

我感觉着可能就是我认为的性能提升吧。


但是事与愿违,我在sql server观察这两条语句的执行计划,发现两者的执行计划是一模一样的。尚没有找到性能提升的点,

有哪位大神给解答一下?

0 0