by 손님 [어플리케이션관련] 바인딩 변수 하드파싱 PreparedStatement [2009.10.29 09:45:32]
안녕하세요. 일단 질문 자체가 좀 말이 안되긴 합니다만 상황이 애매합니다.
현재 공공기관쪽의 SI를 하고 있습니다.
그런데 국정원의 권고사항에서 sql 인젝션등의 보안 이슈로 인해서 PrepredStatement(자바에서 바인딩 변수를 사용할 수 있는 클래스)를 사용하도록 권고하고 있습니다.
그래서 모든 쿼리가 PreparedSatement를 사용하고 있는데요.
쿼리 중에서 상당 부분이 통계성쿼리인데 데이터의 분포도가 매우 비대칭적인 경우가 많습니다.
그래서 하드파싱하면 1초도 안되서 끝날 쿼리가 20초에서 몇분까지 걸리는 경우가 자주 발생하고 있습니다. 힌트를 사용해서 쿼리마다 튜닝해주기도 어렵습니다.(허접한 실력이라서...)
물론 PrepredStatement를 안쓰면 되지만 이게 권고사항이라 제 맘대로 사용할 수가 없네요.
혹시 PrepredStatement나 오라클 힌트중에서 강제로 하드 파싱을 하도록 할 수 있는 옵션이 있나요?
구글링으로도 쉽지가 않네요.
조그마한 힌트라도 주세요 ~