동일한 SQL 쿼리문에 대해 prepare와 query 사용 비용이 동일합니까?
$sql = $pdo -> prepare("테이블에서 * 선택");
$sql -> 실행();
$rs = $sql -> fetch(PDO::FETCH_ASSOC);
$rs = $go -> fetch(PDO::FETCH_ASSOC);
예를 들어 위의 준비 쿼리와 쿼리 쿼리는 동일하게 효율적인가요? (SQL 문 삽입을 무시합니다).
Single 질의 결과에는 어떤 것을 사용하는 것이 더 좋나요? 쿼리할 때 데이터베이스를 두 번 이상 데이터베이스로 보낼 준비를 하시겠습니까?
1.PDO::query는 SQL 문을 실행하고, 전달되면 PDOStatement 개체를 반환합니다. PDO::query 함수에는 "매우 좋은 점"이 있습니다. 즉, 반환된 레코드 세트를 직접 순회할 수 있다는 것입니다.
2.PDO::exec는 SQL 문을 실행하고 영향을 받은 행 수를 반환합니다. 이 함수는 결과 컬렉션을 반환하지 않습니다. 공식 권장 사항:
프로그램에서 한 번만 실행해야 하는 SELECT 문의 경우 PDO::query() 사용을 고려하세요.
여러 번 실행해야 하는 명령문의 경우 PDO::prepare()를 사용하여 PDOStatement 객체를 준비하고 PDOStatement::execute()를 사용하여 명령문을 실행할 수 있습니다.
PDO::exec는 SELECT/DELETE/UPDATE/INSERT 등 모든 SQL 문 실행을 지원하므로 PDO query() 함수보다 훨씬 강력합니다. 영향을 받는 함수만 반환되기 때문에 SELECT를 실행하면 PDOStatement 개체를 가져올 수 없으므로 공식 권장 사항에 따라 쿼리 또는 실행 함수만 사용할 수 있습니다. .
3.prepare의 원리는 sql문을 sql서버로 미리 보내서 컴파일한 뒤 exec가 실행될 때 실제로 실행되는 것입니다. 한 번 컴파일하면 여러 번 실행됩니다. 쿼리가 하나만 있는 경우 준비와 쿼리의 효율성은 기본적으로 동일합니다. 여러 번 실행하면 준비의 효율성이 드러납니다. 또한 where in (" ")과 같은 SQL 인젝션을 모두 방지할 수 있는 것은 아닙니다.