對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,從而達到提高效率的目的,但是兩者孰優孰劣,應該說是沒有太大的區別的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM