Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
more
Archives
Today
Total
관리 메뉴

으나님의 잡다한 개발상식

(SQL) 형변환과 인덱스 본문

SQL

(SQL) 형변환과 인덱스

스위트치즈 2020. 5. 25. 19:43

1. 형변환

1) 명시적 형변환 : 형변환 함수를 사용하는 경우

- TO_NUMBER(문자열)

- TO_CHAR(숫자 혹은 날짜, [FORMAT])

- TO_DATE(문자열, FORMAT)

 

2) 암시적 형변환 : DBMS가 자동으로 형변환 하는 경우

 

SELECT * FROM EMP WHERE EMPNO = '100';

EMPNO가 숫자형 데이터 타입이라고 가정하자. 여기서는 비교값을 '100'으로 따옴표로 묶었기 때문에 '100'은 문자형이다. 이 경우 EMPNO를 ORACLE이 자동으로 TO_CHAR(EMPNO)로 변환해서 데이터 타입을 일치시킨다.

 

 

3) 암시적 형변환과 인덱스

인덱스는 데이터를 빠르게 조회하기 위해 인덱스 키를 기준으로 정렬해 놓은 데이터이다. 그런데 기본적으로 인덱스는 변형이 발생하면 사용할 수 없다(예외도 있음). 따라서 인덱스가 있어도 인덱스 컬럼에 형변환이 발생하면 인덱스를 사용할 수 없다.

 

SELECT * FROM EMP WHERE EMPNO = '100';

만약 EMPNO가 숫자형 데이터 타입이고 기본키라면 이 경우 자동으로 암시적 형변환이 되므로 인덱스를 사용할 수 없게 된다. 이와 같은 문제는 아래와 같이 해결할 수 있다.

 

SELECT * FROM EMP WHERE EMPNO = TO_NUMBER('100');

'SQL' 카테고리의 다른 글

(SQL) WITH 구문  (0) 2020.05.25
(SQL) ROWID  (0) 2020.05.25
(SQL) COUNT 함수  (0) 2020.05.25
(SQL) NULL관련 함수  (0) 2020.05.25
(SQL) ORDER BY  (0) 2020.05.25