WHERE 절을 이용한 조건 검색

 

*WHERE절

-테이블에 저장된 데이터중에서 원하는 데이터만 선택적으로 검색하는 기능

-WHERE절의 조건문은 칼럼 이름, 연산자, 상수, 산술 표현식을 결합하여 다양한 형태로 표현 가능

-WHERE절에서 사용하는 데이터 타입은 문자, 숫자, 날짜 타입 사용 가능

-문자와 날짜 타입의 상수 값은 작은 따옴표('')로 묶어서 표현하고 숫자는 그대로 사용

-상수값에서 영문자는 대소문자를 구별

 

*사용법

 

SELECT      [DISTINCT] { * | column[alias]...}

FROM          table

[WHERE        condition];

 

 

 

 

데이터 타입의 결정 전략

 

*응용 프로그램 개발시 오류 감소

 

*SQL 명령문의 검색 성능에 영향

 

*문자형 데이터

-데이터의 길이가 가변인지, 고정인지 고려

 

*데이터가 숫자인 경우

-숫자 데이터 타입 또는 문자형 데이터 타입으로 지정할지 고려

 

*데이터가 날짜 타입인 경우

-문자 데이터 타입으로 지정하는 편이 효율적

 

 

 

 

TIP! DUAL 테이블

 

ORACLE 9i TRACE 결과

 

 

TIP! DUAL 테이블

 

ORACLE 10g TRACE 결과

 

 

 

TIP! DUAL 테이블

ORACLE 10G TRACE 결과​

 

 

TIP! DUAL 테이블

 

*Oracle 9i에서 사용되는 DUAL의 FULL TABLE SCAN 대신, 10g에서는 FAST DUAL optimization plan을 사용하고 있다는 점을 주목하시기 바랍니다. 이러한 기능 개선을 통해 DUAL 테이블을 자주 사용하는 애플리케이션의 연속적인 읽기 작업 성능이 대폭적으로 향상되었습니다.

 

 

 

TIP! DUAL 테이블

 

*아래와 같은 명령을 실제로 사용하는 개발자(또는 DBA)의 수가 얼마나 될 것이라 생각하십니까?

 

select USER into <some variable> from DUAL

 

아마 거의 모든 이들이 사용하고 있을 것입니다. DUAL은 호출될 때마다 새로운 논리적 I/O(Buffer I/O)를 생성합니다. 이 기능은 매우 유용하게 활용됩니다. DUAL은 <somevariable> :=USER와 같은 구문만큼이나 자주 사용되고 있습니다. 하지만 오라클 코드는 DUAL을 특수한 형태의 테이블로서 취급하며, 따라서 일반적인 튜닝 방법은 적용할 수 없다는 문제가 있습니다.

 

Oracle Database 10g에서라면 이에 관련한 걱정은 할 필요가 없습니다. DUAL이 특수한 테이블이기 때문에, 논리적 I/O를 나타내는 consistent gets의 값도 줄어들며, event 10046 trace에서 확인할 수 있는 것처럼 optimization plan도 다른 형태로 나타납니다.

 

 

 

 

TIP! DUAL 테이블

 

*DUAL테이블은 데이터 딕셔너리와 함께 Oracle에 의해 자동으로 생성되는 테이블 입니다.

-DUAL테이블은 사용자 SYS의 스키마에 있지만 모든 사용자는 DUAL이라는 이름으로 엑세스 할 수 있습니다.

-DUAL테이블은 VARCHAR2(1)으로 정의된 DUMMY라는 하나의 열이 있으며 값을 가지는 하나의 행도 포함되어 있습니다.

-DUAL테이블은 사용자가 계산이나 사용자 함수등을 실행하고자 할 경우에 유용합니다.

 

 

 

+ Recent posts