where 조건 순서 가 다 르 고 성능 이 다른 예시 연구

4007 단어 where조건.
어제 책 에서 SQL 문 구 를 최적화 하 는 것 을 보 았 을 때 where 조건 순서 가 다 르 고 성능 이 다 릅 니 다.이 제안 은 Oracle 11G 버 전에 서 적당 합 니까?방식 1 이 방식 2 보다 낫다 고요?방식 1:4,567913.방식 2:4,567913.10g 에서 테스트 결과 가 똑 같 음 을 증명 합 니 다.Microsoft Windows[버 전 5.2.3790](C)판권 소유 1985-2003 Microsoft Corp.C:\\Documents and Settings\\Administrator>sqlplus/as sysdba SQL*Plus:Release 10.2.0.1.0-Production on 토요일 5 월 11 일 17:48:55 2013 Copyright(c)1982,2005,Oracle Database 10g Enterprise Edition Release 10.2.0.1.0-Production With the Partitioning,OLAP and Data Mining options SQL>alter system flush sharedpool; 시스템 이 변경 되 었 습 니 다.SQL> alter system flush buffer_cache; 시스템 이 변경 되 었 습 니 다.SQL> set autotrace on; SQL> select * 2 from COUNTRIES c, 3 REGIONS r 4 where c.REGION_ID=r.REGION_ID and c.REGION_ID='4'; REGIONS r*세 번 째 줄 에 오류 가 발생 했 습 니 다:ORA-00942:표 나 보기 에 SQL>select*2 from hr.COUNTRIES c,3 hr.REGIONS r 4 where c.REGIONID=r.REGION_ID and c.REGION_ID='4'; CO COUNTRY_NAME REGION_ID REGION_ID -- ---------------------------------------- ---------- ---------- REGION_NAME ------------------------- EG Egypt 4 4 Middle East and Africa IL Israel 4 4 Middle East and Africa KW Kuwait 4 4 Middle East and Africa CO COUNTRY_NAME REGION_ID REGION_ID -- ---------------------------------------- ---------- ---------- REGION_NAME--------------------------------------------------------------------------------------------------실행 계획---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 6 | 168 | 2 (0)| 00:00:01 | | 1 | NESTED LOOPS | | 6 | 168 | 2 (0)| 00:00:01 | | 2 | TABLE ACCESS BY INDEX ROWID| REGIONS | 1 | 14 | 1 (0)| 00:00:01 | |* 3 | INDEX UNIQUE SCAN | REG_ID_PK | 1 | | 0 (0)| 00:00:01 | |* 4 | INDEX FULL SCAN | COUNTRY_C_ID_PK | 6 | 84 | 1 (0)| 00:00:01 | -------------------------------------------------------------------------------- ---------------- Predicate Information (identified by operation id): --------------------------------------------------- 3 - access("R"."REGION_ID"=4) 4 - filter("C"."REGION_ID"=4)통계 정보---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- SQL> alter system flush shared_pool; 시스템 이 변경 되 었 습 니 다.SQL> alter system flush buffer_cache; 시스템 이 변경 되 었 습 니 다.select * from hr.COUNTRIES c, hr. REGIONS r where c.REGION_ID='4' 6 and c.REGION_ID=r.REGION_ID; CO COUNTRY_NAME REGION_ID REGION_ID -- ---------------------------------------- ---------- ---------- REGION_NAME ------------------------- EG Egypt 4 4 Middle East and Africa IL Israel 4 4 Middle East and Africa KW Kuwait 4 4 Middle East and Africa CO COUNTRY_NAME REGION_ID REGION_ID -- ---------------------------------------- ---------- ---------- REGION_NAME--------------------------------------------------------------------------------------------------실행 계획---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 6 | 168 | 2 (0)| 00:00:01 | | 1 | NESTED LOOPS | | 6 | 168 | 2 (0)| 00:00:01 | | 2 | TABLE ACCESS BY INDEX ROWID| REGIONS | 1 | 14 | 1 (0)| 00:00:01 | |* 3 | INDEX UNIQUE SCAN | REG_ID_PK | 1 | | 0 (0)| 00:00:01 | |* 4 | INDEX FULL SCAN | COUNTRY_C_ID_PK | 6 | 84 | 1 (0)| 00:00:01 | -------------------------------------------------------------------------------- ---------------- Predicate Information (identified by operation id): --------------------------------------------------- 3 - access("R"."REGION_ID"=4) 4 - filter("C"."REGION_ID"=4)통계 정보--------------------------------------------------------------------------------------------------------------------------------------------------------

좋은 웹페이지 즐겨찾기