Notice
Recent Posts
Recent Comments
Link
«   2026/08   »
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] 바인드 변수와 하드 파싱

느린 거북이 2021. 3. 17. 11:04

바인드 변수와 하드 파싱

대부분의 개발자들은 튜닝 시 실행계획을 상수값으로 테스트 하지만, 실제로 바인드 변수로 운영되는 경우에는 실행계획이 다를 수 있습니다. 프로그램에서 바인드 변수로 되어 있다면 반드시 바인드 변수로 실행계획을 확인해야합니다.

 

SELECT * FROM 고객 WHERE 고객명 = '홍길동' => 상수값

SELECT * FROM 고객 WHERE 고객명 = :NAME  => 바인드 변수

 

위의 두 개의 쿼리는 동일한 결과를 조회하지만 실행계획은 다를 수 있습니다. 이와 같은 쿼리들은 대부분의 경우 실행계획이 동일하지만 간혹 다른 경우도 있으므로, 쿼리가 어떤 방식으로 운영되는지에 따라 실행계획을 구분-확인해야 합니다.

 

1. 바인드 변수를 사용하는 이유

   - 바인드 변수 사용은 하드 파싱을 줄이기 위한 수단입니다. 옵티마이저는 상수값이 다르면 서로 다른 쿼리로

     인식해 파싱을 새로 합니다. 특히 실행 횟수가 많고 컬럼의 Distinct 값이 크다면, 하드 파싱이 자주 발생해 시스템

     전박적으로 많은 메모리를 사용할 것이고 CPU 부하도 높을 것 입니다. 반면에 바인드 변수를 사용한다면

     옵티마이저는 동일한 쿼리로 인식하기 때문에 파싱을 매번 하지 않습니다. 

'SQL' 카테고리의 다른 글

[MySQL] Connection Blocked Error  (0) 2022.02.15
[ORACLE] 실행계획 보는 법 #2  (0) 2021.04.22
[SQL] ORACLE 힌트절  (0) 2021.04.20
[ORACLE] 실행계획 보는 법  (0) 2021.03.17
[ORACLE] SELECT문  (0) 2021.03.17
Comments