• 对WITH和from(select ...)的一点比较


             在之前的工作中,我曾经遇到过表特别大的情况,这个时候我想到了使用with来降低查询的消耗,前文中已经有了描述:http://www.cnblogs.com/wingsless/archive/2012/01/15/2323060.html。今天我突然想到,其实用with和from (select)应该没有本质的差别。所以做了个小实验。

             我的表大概7W行,使用with的SQL语句如下:

             

    WITH A AS (SELECT T.OWNER,
    T.OBJECT_NAME,
    T.OBJECT_ID,
    T.DATA_OBJECT_ID,
    T.OBJECT_TYPE,
    T.LAST_DDL_TIME,
    T.EDITION_NAME,
    T.NAMESPACE
    FROM TEST1 T
    WHERE T.OBJECT_NAME = 'I_USER1')
    SELECT * FROM A;
    SELECT *
    FROM (SELECT T.OWNER,
    T.OBJECT_NAME,
    T.OBJECT_ID,
    T.DATA_OBJECT_ID,
    T.OBJECT_TYPE,
    T.LAST_DDL_TIME,
    T.EDITION_NAME,
    T.NAMESPACE
    FROM TEST1 T
    WHERE T.OBJECT_NAME = 'I_USER1');



           这个表的索引在OBJECT_NAME上。

            这两个语句的执行计划: 

             可以看到两者的执行计划没有任何区别。也就是说,在表的数据量十分巨大的情况下,不管是使用with还是from (select ...)这种形式,可以通过选择需要的列来降低bytes,从而达到提高效率的目的,但是两者孰优孰劣,应该说是没有太大的区别的。

  • 相关阅读:
    git 常用命令速查表
    Git常用命令备忘
    display:inline-block
    JS 封装的结构关系
    IE6,7,8 CSS HACK
    JS 观察者模式
    JS 数组迭代方法
    JS 单例模式
    JS Closure 闭包
    Currying and Uncurrying Js
  • 原文地址:https://www.cnblogs.com/wingsless/p/2338525.html
Copyright © 2020-2023  润新知