2009-07-23 2 views
2

매우 큰 MySQL 데이터베이스 (약 1 백만 항목)가 있으며 해당 데이터베이스에 대해 상당히 복잡한 쿼리가 실행 중입니다. phpMyAdmin에 SQL 명령을 입력하면 약 2 초가 걸리지 만 PHP 코드를 사용하여 동일한 출력을 생성하는 데 약 1-2 분이 걸립니다.데이터베이스 명령은 phpMyAdmin의 PHP 스크립트에서 빠르게 실행됩니다.

왜 이렇게 시간차가 있습니까? 잘못 실행 된 쿼리 인 경우 결과가 phpMyAdmin에도 표시되는 데 오랜 시간이 걸리지 않습니까?

+0

(또 다른 possibile 이유는 쿼리 캐시 될 쿼리를 실행할 처음으로, 그것은 시간이 많이 소요 다음 번, MySQL은 캐시에 결과를 유지하고있다), 또는 뭔가 구체적인. 아무 것도하지 않고 진단하는 것은 매우 어렵습니다. 추측해야한다면 쿼리 캐싱 (PHP 캐싱, phpMyAdmin, 캐싱)으로 실행 중일 수도 있습니다. 그것은 당신이 어떻게이 문제를 겪고 있는지에 달려 있습니다. 더 자세한 정보를 제공 할 수 있습니까? – zombat

답변

3

PHP 스크립트가 단순히 쿼리를 실행하는 것 외에도 많은 작업을 수행 할 가능성이 있습니다 (예 : 엄청난 양의 데이터를 앞뒤로 이동). SQL을 실행하는 PHP 코드를 보여줄 수 있습니까?

참고가에 출력 버퍼링을 없어, 그것은 클라이언트에 이렇게 많은 작은 덩어리를 송신 한 후 클라이언트에 조각하여 데이터 조각 출력, 즉 아래 많은을 느리게 있을지 그, 하나의 큰 덩어리 대신에. output buffering in PHP을 살펴보십시오. 가장 간단한 형태에서

는 :

ob_start(); 
// Output lots of data here. 
ob_end_flush(); 

phpMyAdmin에 대용량의 데이터를 처리하기 위해 최적화된다. 내부 코드를 살펴보고 쿼리의 데이터를 가져 오는 방법을 확인하십시오. 도움이 될 수 있습니다.

또한 필자는 스크립트와 동일한 서버에 phpMyAdmin이 있다고 가정합니다.

+0

고마워요. 내 앱이 더 빨라졌습니다. 귀하의 싹둑으로 사용할 수있는 여분의 감사 ... PHP 지침과 함께 혼자 왼쪽, 나는 그것을 시도 적이 없을거야! – Smandoli

6

정확하게 똑같은 결과를 얻고 있습니까?

데이터베이스의 데이터에 톤이있는 경우 쿼리가 몇 행을 반환합니까?

phpMyAdmin으로 쿼리를 실행하면 페이지 매김이 자동으로 추가됩니다.

그래서,이 초기 쿼리 :

select * 
from test 

phpMyAdmin을 실제로 실행이 하나

select * 
from test 
limit 0, 30 

당신의 PHP 스크립트에서 그것을 실행할 때 당신은 (쿼리에서 그 한계가없는 경우), 차이점을 설명 할 수 있습니다. 30 줄을 가져오고 수백/수천/줄을 가져 오는 데 시간이 오래 걸리지 않습니다.

쿼리에서 한도를 사용하거나 줄을 많이 쓰지 않으려는 경우 코드를 게시 할 수 있습니까?

: 당신은 아마 당신의 쿼리를 작성해야

관련 문제