2010-07-08 5 views
6

Java의 Prepared Statements에 대한 질문이 있습니다.준비된 문과 JDBC 드라이버

  1. SQL 쿼리에 Where 절이 없을 때 준비된 문을 사용하는 것이 유리합니까? 단순한 쿼리를 선택하십시오. * tablename;

  2. Prepared Statement는 한 번 컴파일되고 두 번째 값만 대체된다고합니다. 따라서 쿼리 유효성 검사 및 컴파일 단계를 건너 뛸수록 더 빠릅니다. 컴파일 된 양식은 어디에 저장됩니까? 이 컴파일 된 양식의 수명은 어떻게됩니까? 전달되는 매개 변수가있는 경우 쿼리가 반복적으로 실행 될 때

+1

좋은 세부 사항 : [http://stackoverflow.com/questions/5497297/what-does-pre-compiling-a-jdbc-preparedstatement-do][1] [1 ] : http://stackoverflow.com/questions/5497297/what-does-pre-compiling-a-jdbc-preparedstatement-do – Awan

답변

2
  1. 해, PreparedStatement가 유리하다. 한 번 해고 할 간단한 쿼리가 있으면 명령문이 더 빨리 증명됩니다.

  2. 캐싱은 DB 서버에서 수행됩니다. DB 서버에는 컴파일 된 쿼리 캐싱을 지원하는 API가 있습니다. 따라서 반복적 인 쿼리 실행의 경우 동일한 컴파일 된 쿼리가 다시 실행되어 성능이 향상됩니다.

+0

간단한 "select * from tablename"조차도 컴파일해야하고 실행 계획이 계산됩니다. 이득은 거창하지 않을 수도 있습니다. 컴파일 된 양식을 다시 계산해서는 안되지만 암시 된 테이블이나 인덱스의 변경 내용에 따라 실행 계획을 수행 할 수 있습니다. –

+0

2 번 항목은 완전히 사실이 아닙니다. Apps 서버는 PreparedStatement 캐시를 제공 할 수도 있습니다. Weblogic도 그 중 하나입니다. – RealHowTo

2
  1. 사용 된 PreparedStatement 매번는 사용자의 입력 이상이있다. SQL 인젝션과 쿼리 오류를 방지하기 위해 필요한 문자를 이스케이프하는 데 도움이됩니다.
사전 컴파일에 대한
관련 문제