±×·³ ÀÌÁ¦ Logical Optimizer°¡ ÀçÀÛ¼ºÇÑ SQLÀ» º¸ÀÚ. SELECT d.department_id, d.department_name, d.location_id FROM department d WHERE NOT EXISTS (SELECT 0 FROM employee e WHERE e.department_id IS NULL) --NULL À» üũÇÏ´Â ¼­ºêÄõ¸® AND NOT EXISTS (SELECT 0 FROM employee e WHERE e.department_id = d.department_id) AND d.location_id = 1700 ; SQLÀ» º¸¸é NOT IN ¼­ºêÄõ¸®°¡ NOT EXIST ¼­ºêÄõ¸®·Î ¹Ù²î¾ú°í NULLÀ» üũÇÏ´Â ¼­ºêÄõ¸®°¡ Ãß°¡µÇ¾ú´Ù. ¶ÇÇÑ NULLÀ» üũÇÏ´Â ¼­ºêÄõ¸®ÀÇ °á°ú°¡ ÇÑ °ÇÀÌ¶óµµ Á¸ÀçÇϸé SQLÀº ´õ ÀÌ»ó ½ÇÇàµÇÁö ¾Ê´Â´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. NESTED LOOPS ANTI SNAÀÇ ºñ¹ÐÀÌ Ç®¸®´Â ¼ø°£ÀÌ´Ù. ORACLE 9i¿Í 10g ¿¡¼­µµ À§¿Í °°ÀÌ SQLÀ» ÀÛ¼ºÇϸé NESTED LOOPS ANTI SNAÀÇ È¿°ú¸¦ º¼ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ À§ÀÇ SQLó·³ ¼öµ¿À¸·Î ÀÛ¼ºÇϴ°æ¿ì NULL ÇÑ°ÇÀ» üũ Çϴµ¥ ¿À·¡ °É¸®¸ç ºÎÇÏ°¡ ÀÖ´Ù¸é ÀÌ·¸°Ô »ç¿ëÇÏ¸é ¾È µÈ´Ù. ÀÌÁ¦ PlanÀ» º¸ÀÚ. ------------------------------------------------------------------------------------------- | Id | Operation | Name | A-Rows | A-Time | Buffers | ------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 0 |00:00:00.01 | 4 | |* 1 | FILTER | | 0 |00:00:00.01 | 4 | | 2 | NESTED LOOPS ANTI | | 0 |00:00:00.01 | 0 | | 3 | TABLE ACCESS BY INDEX ROWID| DEPARTMENT | 0 |00:00:00.01 | 0 | |* 4 | INDEX RANGE SCAN | DEPT_LOCATION_IX | 0 |00:00:00.01 | 0 | |* 5 | INDEX RANGE SCAN | EMP_DEPARTMENT_IX | 0 |00:00:00.01 | 0 | |* 6 | TABLE ACCESS FULL | EMPLOYEE | 1 |00:00:00.01 | 4 | ------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter( IS NULL) 4 - access("D"."LOCATION_ID"=1700) 5 - access("E"."DEPARTMENT_ID"="D"."DEPARTMENT_ID") 6 - filter("E"."DEPARTMENT_ID" IS NULL) OperationÀÇ ¼ø¼­¿¡ À¯ÀÇÇ϶ó(±½Àº ±Û¾¾Ã¼) À§ÀÇ PlanÀ» °ú ¿øº» PlanÀ» ºñ±³Çغ¸¸é ¿øº»ÀÌ ANTI SNA¶ó´Â °Í¸¸ Á¦¿ÜÇÏ¸é ½ÇÇà°èȹ°ú ÀÏ·®±îÁö °°À½À» ¾Ë ¼ö ÀÖ´Ù. Çò°¥¸®Áö ¸»¾Æ¾ß ÇÒ °ÍÀº ID ±âÁØÀ¸·Î 6¹ø(NULL üũ ¼­ºêÄõ¸®)ÀÌ °¡Àå ¸ÕÀú ½ÇÇàµÈ´Ù´Â °ÍÀÌ´Ù. ¿Ö³ÄÇÏ¸é ¼­ºêÄõ¸® ³»ºÎ¿¡ ¸ÞÀÎÄõ¸®¿Í Á¶ÀÎÁ¶°ÇÀÌ ¾ø±â ¶§¹®¿¡ ¼­ºêÄõ¸®°¡ ¸ÕÀú ½ÇÇàµÉ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ¹Ý´ë·Î Filter ¼­ºêÄõ¸®³»ºÎ¿¡ ¸ÞÀÎÄõ¸®¿Í Á¶ÀÎ Á¶°ÇÀÌ ÀÖ´Ù¸é ¸ÞÀÎÄõ¸®ÀÇ Ä÷³ÀÌ ¸ÕÀú »ó¼öÈ­ µÇ±â ¶§¹®¿¡ Ç×»ó ¼­ºêÄõ¸®ÂÊ ÁýÇÕÀÌ ÈÄÇàÀÌ µÈ´Ù. ÀÌ·± »ç½ÇÀ» ¸ð¸£°í º¸¸é PLAN»óÀ¸·Î¸¸ º¸¸é NULL üũ ¼­ºêÄõ¸®°¡ °¡Àå ¸¶Áö¸·¿¡ ½ÇÇàµÇ´Â °ÍÀ¸·Î Âø°¢ ÇÒ ¼ö ÀÖ´Ù.