준비된 명령문 지원 사용 - Amazon Redshift

준비된 명령문 지원 사용

Amazon Redshift JDBC 드라이버는 준비된 문을 지원합니다. 준비된 문을 사용하여 동일한 연결 중 여러 번 실행해야 하는 파라미터화된 쿼리의 성능을 향상시킬 수 있습니다.

준비된 문은 서버 측에서 컴파일되지만 즉시 실행되지 않는 SQL 문입니다. 컴파일된 문은 객체 또는 연결을 닫을 때까지 PreparedStatement 객체로 서버에 저장됩니다. 해당 객체가 존재하는 동안 문을 다시 컴파일하지 않고도 여러 파라미터 값을 사용하여 준비된 문을 필요한 만큼 실행할 수 있습니다. 이로 인해 오버헤드가 줄어 쿼리 집합을 더 빠르게 실행할 수 있습니다.

준비된 문에 대한 자세한 내용은Oracle에서 제공하는 JDBC Basics 튜토리얼의 "Using Prepared Statements" 섹션을 참조하세요.

쿼리가 여러 개 포함된 문을 준비할 수 있습니다. 예를 들어 다음의 준비된 문에는 2개의 INSERT 쿼리가 포함되어 있습니다.

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO MyTable VALUES (1, 'abc'); INSERT INTO CompanyTable VALUES (1, 'abc');");

이러한 쿼리가 동일한 준비된 문 내에 지정된 다른 쿼리의 결과에 의존하지 않도록 주의합니다. 쿼리는 준비 단계에서 실행되지 않기 때문에 결과가 아직 반환되지 않았으며 동일한 준비된 문의 다른 쿼리에서 사용할 수 없습니다.

예를 들어 테이블을 생성한 다음 새로 생성된 테이블에 값을 삽입하는 다음의 준비된 문은 허용되지 않습니다.

PreparedStatement pstmt = conn.prepareStatement("CREATE TABLE MyTable(col1 int, col2 varchar); INSERT INTO myTable VALUES (1, 'abc');");

이 문을 준비하려고 하면 서버에서 대상 테이블(myTable)이 아직 존재하지 않는다는 오류를 반환합니다. CREATE 쿼리를 실행해야 INSERT 쿼리를 준비할 수 있습니다.