2013-07-16 2 views
1

마지막으로 PHP 클래스와 혼란에 시간을내어, 호기심에 반복적으로 MySQL의 결과를 사용하여 알고 주제를 읽는 동안 어떤 사람들은 GetDetails() 내에서 GetDetails()를 호출하고 원하는 결과 함수 각각에서 쿼리 함수를 호출하여 반환 된 배열에 액세스 할 수있는 것으로 나타났습니다. 위의 게시 된 방법이 더 효율적이라고 가정 할 때 나는 맞습니까? 또한이 작업을 수행하는 더 좋은 방법이 있습니까?가장 효율적인 방법은

항상 감사합니다, 첫째

+0

Liam이 지적했듯이, mysql_query를 사용하지 마십시오. 준비된 명령.이 최상이며 u 리를 사전 처리 컴파일 할 수 있으 G로 다른 매개 변수로 여러 x 같은 동일한 u 리를 실행중인 경우 u 리를 3 시할 수 있습니다. 나는 절대적으로 가장 빠른 방법을 얻는 것에 대해 걱정하지 않을 것입니다. 데이터베이스로 많은 일을한다면 프레임 워크 나 라이브러리를 권합니다. 예를 들어 [Zend DB] (http://framework.zend.com/manual/2.0/en/modules/zend.db.table-gateway.html)를 살펴보십시오. 개발자는 많은 시간을 절약 할 수 있습니다. 약간의 CPU 시간을 절약하는 것보다 훨씬 중요합니다. – Raekye

답변

1

그것이 감가 상각는 mysql_query를 사용하지 마십시오! PDO를 사용하면 여러 번 연결 요청을하지 않습니다. 나는 그것이 최선의 방법인지 잘 모르겠지만 더 나은 방법은 데이터베이스 클래스를 갖는 것임을 알았다. 데이터베이스에 연결 한 후 생성자가 쿼리에 전달한 쿼리 함수를 가지고 결과를 반환하면 필요한 모든 것이 2 가지 방법입니다! http://php.net/manual/en/class.pdo.php

+0

감사합니다.이 PDO를 사용해보고 내가 얻은 곳을 볼 것입니다. 나는 단지 가난한 습관을 배우지 않는 것을 선호합니다. – jboneca

+0

pdo execute가 키를 가진 배열 (item =>)을 배치 (: item)와 일치시킬 수있는 시간을 절약하는 간단한 설명 –

1

여기에는 "최상의"또는 "가장 효율적인"항목에 대한 명확한 답을 얻지 못합니다. 이는 응용 프로그램의 요구 - 데이터 액세스 패턴, 작업 할 데이터의 크기, 데이터 액세스 지연에 대한 허용 범위 등이 포함됩니다.

항상 트레이드 오프가 있습니다. 예를 들어, 결과 배열을 클래스에 저장하면 메모리를 활용해야합니다. 따라서 배열이 작고 요청 처리를 통해 데이터에 자주 액세스해야하는 경우 이것이 최선의 방법 일 수 있습니다. 그러나 배열이 상당히 크고이 데이터를 메모리에 저장하는 요청의 동시성이 높으면 각 요청에 대해 결과를 저장하는 데 많은 서버 메모리를 할당하지 않을 수 있습니다. 누가 어떤 결과를 얻으려면 캐시를 사용하는 것이 가장 좋을지도 모릅니다.

결론은 응답 대기 시간을 줄이거 나 메모리 사용량을 줄이거 나 또는 무엇이든간에 목표를 달성하는 데 가장 적합한 것이 무엇인지 결정하기 위해 사용자가 만든 트레이드 오프를 실제로 이해하고 테스트해야한다는 것입니다 .

관련 문제