設計開發時慎重決定列是否為空(二)
案例2
NOT IN的典型查詢中NULL值會限制unnest轉換,導致優化器無法選擇ANTI演算法,而走了低效的filter。
(11g中,二者選擇的執行計劃是一樣的)
點選(此處)摺疊或開啟
-
DROP TABLE t1;
-
CREATE TABLE t1 as SELECT * FROM user_objects;
-
DROP TABLE t2;
-
CREATE TABLE t2 AS SELECT * FROM user_objects;
-
SET timing ON
-
SET autotrace traceonly
-
SELECT * FROM t1 WHERE object_id NOT IN (SELECT object_id FROM t2 group by object_id, object_name having count(*) > 1);
-
-
15 rows selected.
-
-
Elapsed: 00:00:00.06
-
-
Execution Plan
-
----------------------------------------------------------
-
Plan hash value: 2948349348
NOT IN的典型查詢中NULL值會限制unnest轉換,導致優化器無法選擇ANTI演算法,而走了低效的filter。
(11g中,二者選擇的執行計劃是一樣的)點選(此處)摺疊或開啟
-
DROP TABLE t1;
-
CREATE TABLE t1 as SELECT * FROM user_objects;
-
DROP TABLE t2;
-
CREATE TABLE t2 AS SELECT * FROM user_objects;
-
SET timing ON
-
SET autotrace traceonly
-
SELECT * FROM t1 WHERE object_id NOT IN (SELECT object_id FROM t2 group by object_id, object_name having count(*) > 1);
-
-
15 rows selected.
-
-
Elapsed: 00:00:00.06
-
-
Execution Plan
-
----------------------------------------------------------
- Plan hash value: 2948349348
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1072397/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計開發時慎重決定列是否為空
- NX二次開發-判斷程式是否為空刀軌
- JavaScript 判斷陣列或者物件是否為空JavaScript陣列物件
- 嫁程式設計師?請慎重!程式設計師
- PHP 判斷陣列是否為空的幾種方法PHP陣列
- JS如何判斷一個陣列是否為空、是否含有某個值JS陣列
- PHP 判斷陣列是否為空的5大方法PHP陣列
- Java 定義長度為 0 的陣列 / 空陣列Java陣列
- 網路程式設計定時器二:使用時間輪程式設計定時器
- 面試官:RabbitMQ過期時間設定、死信佇列、延時佇列怎麼設計?面試MQ佇列
- 判斷字串是否為空字串
- Java判斷欄位是否為空,為空賦值 ?Java賦值
- 臨時表空間的建立、刪除,設定預設臨時表空間
- 二維陣列JSON.stringify 後,第二層陣列解析為空陣列JSON
- 一個人是否能成為程式設計師是上天註定的程式設計師
- js判斷字串是否為空JS字串
- mysql如何判斷是否為空MySql
- JavaScript判斷字串是否為空JavaScript字串
- java判斷字串是否為空Java字串
- js判斷物件是否為空JS物件
- 判斷物件值是否為空物件
- java判斷物件是否為空Java物件
- Spaces SDK:專為實時協作功能開發設計的SDK
- 程式設計師在工作時間做私活,是否該開除?程式設計師
- 如何判斷 JavaScript 物件是否為空?JavaScript物件
- python判斷list是否為空Python
- Delphi Variant 判斷是否為空
- 【程式設計開發】之開發解決的“坑“程式設計
- 快速開始api開發(五)定時任務 crontab 和 佇列 queueAPI佇列
- 定時任務發展史(二)
- 倒數計時應用定製化開發
- 直播平臺軟體開發,判斷當前時間是否在規定時間內
- 遊戲大地圖開發指南:遊戲外部空間設計遊戲地圖
- oracle多列為空與多列不為空的區別小示例Oracle
- MYSQL中給時間列設定預設值MySql
- 開機時的設定
- DB2 列為null,無法設定該列為主鍵DB2Null
- 2 為效能而設計和開發