>  기사  >  백엔드 개발  >  PHP의 mysqli_query 매개변수 MYSQLI_STORE_RESULT와 MYSQLI_USE_RESULT_php 팁의 차이점

PHP의 mysqli_query 매개변수 MYSQLI_STORE_RESULT와 MYSQLI_USE_RESULT_php 팁의 차이점

WBOY
WBOY원래의
2016-05-16 20:35:281051검색

nosql이 대중화되었지만 여전히 sql이 주류인 것 같아요
오늘 php manul을 탐색하다가 mysqli 쿼리가 흥미로운 매개변수를 전달할 수 있다는 것을 발견했습니다

코드 복사 코드는 다음과 같습니다.

@mysqli_query($this->sql,$SQL,($method ? MYSQLI_USE_RESULT : MYSQLI_STORE_RESULT));

이 두 매개변수는 PHP 매뉴얼에 다음과 같이 설명되어 있습니다.

코드 복사 코드는 다음과 같습니다.

원하는 동작에 따라 MYSQLI_USE_RESULT 또는 MYSQLI_STORE_RESULT가 기본적으로 사용됩니다.

아무것도 전달되지 않으면 기본값은 MYSQLI_STORE_RESULT입니다.

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는 서버에 더 큰 부하를 가하므로 클라이언트가 모든 행을 검색하는 데 적합해 보일 때까지 결과 집합의 행을 유지해야 합니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.