by 생각하쟈 [2023.12.01 17:31:20]
db는 오라클19c입니다.
방법1
for(int i=0;i<KeyList;i++)
{
변수 = 변수 +' keyList[i]'
}
// 변수가 'key1','key2','key3' 이렇게 되었다고 가정
SELECT
*
FROM
TABLE A
WHERE
KEY IN ( 변수 )
방법2
for(int i=0;i<KeyList;i++)
{
KEYNAME = keyList[i]
SELECT
*
FROM
TABLE A
WHERE
KEY = KEYNAME
// keyList 만큼 쿼리 조회
}
첫번째 방법은 한번 쿼리를 하는 대신 쿼리가 유동적으로 바뀌고, 밑에 쿼리는 쿼리문은 똑같고 여러번 수행하는 차이인데요
첫번째 방법처럼 하면 하드 파싱이 일어나서 하지말라고 배웠는데...
두번째 방법이 더 좋을까요.?
감사합니다.
좋은 하루 되세요.
장단점이 있겠죠.
1번 : 동적쿼리, 바인드 변수 미사용, 1번 콜, 매번 하드 파싱
2번 : 바인드 변수 사용, 여러번 콜, 소프트 파싱
상황에 따라 다릅니다.
동적쿼리가 무조건 나쁜 것 만은 아닙니다.
매우 자주 호출되는 쿼리라면 쿼리를 재사용하는 2번이 맞고
대용량 쿼리로 가끔 사용되지만 성능이 필요한 경우 1번이 맞습니다.
답변감사합니다
마농님!