對WITH和from(select ...)的一點比較

     在之前的工作中,我曾經遇到過表特別大的情況,這個時候我想到了使用with來降低查詢的消耗,前文中已經有了描述:http://wingsless.blog.51cto.com/3753561/764430。今天我突然想到,其實用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,從而達到提高效率的目的,但是兩者孰優孰劣,應該說是沒有太大的區別的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章