이 글에서는 주로 PHP의 mysqli_query 매개변수 MYSQLI_STORE_RESULT와 MYSQLI_USE_RESULT의 차이점을 소개합니다. 이 글에서는 도움이 필요한 친구들이 참고할 수 있는 5가지 차이점을 소개합니다.
nosql이 대중화되었지만 여전히 sql이 주류인 것 같아요
오늘 php manul을 뒤져보니 mysqli 쿼리가 흥미로운 매개변수를 전달할 수 있다는 걸 발견했습니다
@<span style="color: #008080;">mysqli_query</span>(<span style="color: #800080;">$this</span>->sql,<span style="color: #800080;">$SQL</span>,(<span style="color: #800080;">$method</span> ? <span style="color: #008080;">MYSQLI_USE_RESULT</span> : <span style="color: #008080;">MYSQLI_STORE_RESULT</span>));
Either the <span style="color: #008080;">constant</span> <span style="color: #008080;">MYSQLI_USE_RESULT</span> or <span style="color: #008080;">MYSQLI_STORE_RESULT</span> depending on the desired behavior. By <span style="color: #0000ff;">default</span>, <span style="color: #008080;">MYSQLI_STORE_RESULT</span> is used.
phpmanul에서 누군가 이렇게 말했습니다. 많은 양의 데이터를 검색해야 한다면 MYSQLI_USE_RESULT를 사용합니다
사실 이 두 매개변수의 차이는 여전히 매우 큽니다.
(1) 차이점은 서버에서 결과 집합의 행을 검색한다는 점입니다.
(2) MYSQLI_USE_RESULT는 쿼리를 시작하지만 실제로 행을 가져오지 않습니다.
(3) MYSQLI_STORE_RESULT는 모든 행을 즉시 검색합니다.
(4) MYSQLI_STORE_RESULT는 결과 집합이 서버에서 검색될 때 행을 가져오고 할당합니다. 메모리를 클라이언트에 저장한 다음 mysqli_fetch_array()를 호출하면 오류가 반환되지 않습니다. 이는 결과 집합을 유지하는 데이터 구조에서 행만 분리하기 때문입니다. mysqli_fetch_array()는 항상 NULL을 반환합니다. 결과 집합의 끝에 도달했음을 나타냅니다.
(5) MYSQLI_USE_RESULT 자체는 행을 검색하지 않고 행 단위 검색만 시작합니다. 즉, 각 행에 대해 mysqli_fetch_array()를 호출하여 자체적으로 완료해야 함을 의미합니다. 그런 경우에는 일반적인 상황에서 mysqli_fetch_array()가 NULL을 반환하는 것은 여전히 결과 집합의 끝에 도달했음을 나타내지만 서버와 통신하는 동안 오류가 발생했음을 나타낼 수도 있습니다.
요약
MYSQLI_USE_RESULT에 비해 MYSQLI_STORE_RESULT는 더 높은 메모리 및 처리 요구 사항을 갖습니다. 전체 결과 세트가 클라이언트에 유지되기 때문에 한 번에 여러 행을 검색하려는 경우 메모리 할당 및 데이터 구조 생성 비용이 매우 큽니다. , MYSQLI_USE_RESULT를 사용할 수 있습니다.MYSQLI_USE_RESULT는 매번 처리되는 단일 행에 대해 충분한 공간만 할당되므로 메모리 요구 사항이 더 낮습니다. 결과 집합에 대해 복잡한 데이터 구조를 만들 필요가 없기 때문에 더 빠릅니다. 반면 MYSQLI_USE_RESULT는 서버에 더 많은 로드를 가하므로 클라이언트가 모든 행을 검색하는 데 적합해 보일 때까지 결과 집합의 행을 유지해야 합니다.
참고자료 : http://www.manongjc.com/article/1195.html