国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

對外連接的表加上條件后將會使外連接失效

2024-07-21 02:41:56
字體:
來源:轉載
供稿:網友

現象:一條SQL的運行突然變得很慢。


select uidTable.column_value, first_name||' '||last_name,
company, job_title, upper(member_level), upper(service_value)
from (select * from table(select cast(multiset
(select b from bbb)as Taaa) from dual)) uidTable,member
where uidTable.column_value = member.login_id(+) and
member.site='alibaba' and member.site='test';
 

原因:經檢查錯誤得原因是用戶增加了一個條件member.site=test,造成連接的順序變化了,原來的驅動表是uidTable(最多1024條記錄),現在變成了member表做驅動(600W條)。所以這條語句變得特別慢。

但是既然是外連接,為什么連接的順序會改變呢?因為外連接的連接順序不是由COST決定的,而是由連接的條件決定的。發現執行計劃如下:


-------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost |
------------------------------------------------
| 0 | SELECT STATEMENT | | 1018 | 72278 | 8155 |
| 1 | NESTED LOOPS | | 1018 | 72278 | 8155 |
| 2 | VIEW | | 4072 | 69224 | 11 |
| 3 | COLLECTION ITERATOR SUBQUERY FETCH| | | | |
| 4 | TABLE access FULL | DUAL | 4072 | | 11 |
| 5 | TABLE ACCESS FULL | BBB | 41 | 287 | 2 |
| 6 | TABLE ACCESS BY INDEX ROWID | MEMBER | 1 | 54 | 2 |
|* 7 | INDEX UNIQUE SCAN | MEMBER_SITE_LID_PK | 4 | | 1 |
-------------------------------------------------
 

大家要問:“為什么根本就沒有執行外連接呢?”問題出在member.site='test'這個條件上,因為對外連接的表加了條件,造成外連接失效。改為member.site(+)='test'后,問題徹底解決。


---------------------------------
| Id | Operation | Name | Rows | Bytes | Cost |
-----------------------------------------------------
| 0 | SELECT STATEMENT | | 1018 | 72278 | 8155 |
| 1 | NESTED LOOPS | | 1018 | 72278 | 8155 |
| 2 | VIEW | | 4072 | 69224 | 11 |
| 3 | COLLECTION ITERATOR SUBQUERY FETCH| | | | |
| 4 | TABLE ACCESS FULL | DUAL | 4072 | | 11 |
| 5 | TABLE ACCESS FULL | BBB | 41 | 287 | 2 |
| 6 | TABLE ACCESS BY INDEX ROWID | MEMBER | 1 | 54 | 2 |
|* 7 | INDEX UNIQUE SCAN | MEMBER_SITE_LID_PK | 4 | | 1 |
-----------------------------------------------------


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华阴市| 那坡县| 木里| 敦化市| 崇左市| 杭锦旗| 彭泽县| 美姑县| 新兴县| 白山市| 昂仁县| 基隆市| 大兴区| 静海县| 琼结县| 甘南县| 沭阳县| 利津县| 渑池县| 石首市| 沁源县| 浪卡子县| 桦甸市| 阳朔县| 广河县| 五台县| 阳新县| 鹤峰县| 浙江省| 五原县| 兴安盟| 滕州市| 阿拉善左旗| 张家口市| 新河县| 铜川市| 铜川市| 贵南县| 夏河县| 永仁县| 阿勒泰市|