>데이터 베이스 >MySQL 튜토리얼 >준비된 문이 JDBC의 문보다 빠른 이유는 무엇입니까? 설명하다?

준비된 문이 JDBC의 문보다 빠른 이유는 무엇입니까? 설명하다?

WBOY
WBOY앞으로
2023-08-26 17:57:06809검색

为什么 JDBC 中的准备语句比语句更快?解释?

Statement 개체를 사용하여 명령문을 실행할 때, 특히 명령문을 삽입할 때 쿼리가 실행될 때마다 전체 명령문이 컴파일되고 반복적으로 실행되는데, 여기서 명령문 간의 유일한 차이점은 해당 명령문의 값입니다. 성명.

그러나 준비된 문은 미리 컴파일된 문입니다. 즉, 값 대신 자리 표시자(?)를 사용하여 쿼리가 컴파일되어 데이터베이스에 저장되고, 이러한 자리 표시자의 값은 나중에 제공됩니다.

그러므로 불필요한 컴파일 및 실행문을 반복해서 피하세요.

Example

데이터베이스에 columns mobile_brandunit_sale을 포함하는 Dataset이라는 테이블이 있다고 가정하고, 문 개체를 사용하여 이 테이블에 레코드를 삽입하려는 경우 코드는 다음과 같습니다. 표현:

stmt.executeUpdate("insert into Dataset values('Iphone', 3000)");
stmt.executeUpdate("insert into Dataset values('Samsung', 4000)");
stmt.executeUpdate("insert into Dataset values('Nokia', 5000)");
stmt.executeUpdate("insert into Dataset values('Vivo', 1500)");
stmt.executeUpdate("insert into Dataset values('Oppo', 9000)");
stmt.executeUpdate("insert into Dataset values('MI', 6400)");
stmt.executeUpdate("insert into Dataset values('MotoG', 4360)");
stmt.executeUpdate("insert into Dataset values('Lenovo', 4100)");
stmt.executeUpdate("insert into Dataset values('RedMi', 4000)");
stmt.executeUpdate("insert into Dataset values('OnePlus', 6334)");

executeUpdate() 메소드 호출에 대해 그 안의 전체 명령문이 컴파일되고 실행됩니다. 쿼리의 나머지 부분이 불필요하게 컴파일되는 동안 명령문의 값만 변경되는 것을 관찰한 경우입니다.

동일한 테이블에 동일한 데이터를 삽입하기 위해 준비된 문을 사용하여 삽입 쿼리를 작성하면 코드는 다음과 같습니다.

PreparedStatement pstmt = con.prepareStatement("insert into Dataset values(?, ?)");

pstmt.setString(1, "Iphone");
pstmt.setInt(2, 3000);
pstmt.executeUpdate();

pstmt.setString(1, "Samsung");
pstmt.setInt(2, 4000);
pstmt.executeUpdate();

pstmt.setString(1, "Nokia");
pstmt.setInt(2, 5000);
pstmt.executeUpdate();

pstmt.setString(1, "Vivo");
pstmt.setInt(2, 1500);
pstmt.executeUpdate();

pstmt.setString(1, "Oppo");
pstmt.setInt(2, 900);
pstmt.executeUpdate();

pstmt.setString(1, "MI");
pstmt.setInt(2, 6400);
pstmt.executeUpdate();

pstmt.setString(1, "MotoG");
pstmt.setInt(2, 4360);
pstmt.executeUpdate();

pstmt.setString(1, "Lenovo");
pstmt.setInt(2, 4100);
pstmt.executeUpdate();

pstmt.setString(1, "RedMi");
pstmt.setInt(2, 4000);
pstmt.executeUpdate();

pstmt.setString(1, "MotoG");
pstmt.setInt(2, 4360);
pstmt.executeUpdate();

pstmt.setString(1, "OnePlus");
pstmt.setInt(2, 6334);
pstmt.executeUpdate();

여기서 삽입 쿼리가 자리 표시자(?)로 준비되어 있는 것을 관찰하면 쿼리는 컴파일되어 데이터베이스에 저장되고, 값은 나중에 preparedStatement 인터페이스의 setter 메소드를 사용하여 전달되므로 불필요한 명령문 실행을 방지합니다.

위 내용은 준비된 문이 JDBC의 문보다 빠른 이유는 무엇입니까? 설명하다?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제