를 사용해야 하는 하나의 큰 선택 SQL 문 또는 여러 개의 작은 것입니까?

StackOverflow https://stackoverflow.com/questions/55463

문제

나는 건설 PHP 페이지에 전송되는 데이터에서 MySQL.

그것이 더 좋은가

  • 1 SELECT 쿼리와 함께 4 개 테이블 조인,또는
  • 4 개의 작은 SELECT 쿼리와 더 테이블 가입;나는에서 선택 ID

빠르고 무엇입 pro/con 의 각 방법은?나는 하나가 필요 행에서 각각의 테이블이 있습니다.

도움이 되었습니까?

해결책

실행해야 합 프로파일링 도구는 경우에 당신은 정말 걱정이 그 원인은 많은 것들에 따라 달라집하고 그것을 달라질 수 있습니다 하지만 규칙으로 그것의 더 적은 쿼리를 컴파일하고 적은 라운드 여행을 데이터베이스입니다.

는지 확인을 필터링하는 것 뿐만 아니라할 수 있을 사용하여 어디에 가입 절입니다.

하지만 정직하게,그것은 일반적으로 중요하지 않기 때문 당신은 아마가 될 모든 어려운에 비해 무엇을 할 수 있는 데이터베이스,그래서 최적화가 당신의 사양을 해야 하는지 그것을 조기에 할 무엇이 간단합니다.

다른 팁

을 사용할 때 조는 대신 여러 쿼리할 수 있는 데이터베이스를 적용하는 경우가 많습니다.당신은 또한 당신은 잠재적으로 검색하는 행 당신이 필요로 하지 않는(당신이 대체하는 안으로 가입 할 여러 개 선택),증가하는 간의 네트워크 트래픽의 응용 프로그램 서버 및 데이터베이스 서버입니다.는 경우에도 그들이 동일한 박스,이 문제입니다.

일반적으로,그것의 더 나은 하나가 선택한 문입니다.주요 이유 중 하나를 데이터베이스는 그들은 빠른 정보를 처리하는 경우 특히,그것은 형식으로의 쿼리가 있습니다.

이 있으면 단점은 이 방법,그것은 거기에 몇 가지 종류의 분석을 할 수 없으로 하나의 큰 선택한 문입니다.RDBMS 순수 주장하는 것이 데이터베이스의 디자인 문제는 경우에,당신은 나의 원본다.

이에 따라 달라질 수 있습니다 무엇을 할 데이터와 함께 한 후에 당신은 그것을 가져 오기에서 DB.당신이 사용하는 경우 각각의 네 개의 결과를 독립적으로,그것은 더 많은 것이 논리적이고 명확한을 가지고 별도의 선택의 문이 있습니다.다른 한편으로 사용하는 경우,당신은 모든 데이터를 함께,같은 파일을 단일 행 테이블 또는 무언가가 다음에 나는 단일 선택하고 결합합니다.

나의 비트를 수행 한 PHP/MySQL 작업,그리고 내가 찾는 것도에 대한 쿼리에는 거대한 테이블의 톤과 함께 조인 데이터베이스에 매우 좋을 최적화하는 경우-당신은 스마트 인덱스입니다.그래서 만약 당신이에 대한 심각한 성능,읽기 시작에 질의 최적화를 인덱싱.

내가 말할 것 1 쿼리와 함께 참여합니다.이 방법은 당신을 공격해야 한 번만 서버.그리고 만약 당신의 테이블에 합류 인덱스가,그것은 빨리 되어야 합니다.

라에서 오라클할을 활용하는 쿼리를 캐싱하는 경우 당신은 많은 작은 쿼리에 여러분이 하고 있는 일을 순차적으로 처리,이 비참하는 경우 마지막 쿼리를 밀어 첫 번째 중 하나의 캐시니다...단지 당신을 위한 시간을 반복하고 실행하는 첫 번째 쿼리를 다시(서로 다른 매개 변수 값을 명백하게)에 다음 전달합니다.

우리는 건물 XML 출력 파일에 Java 를 사용하여 저장된 절차와 확실히 발견되는 라운드 여행 시간 각 개인에 대한 쿼리했을 먹는 우리를 살리셨습니다.우리가 그것을 발견했다 훨씬 더 빨리 모든 데이터를 얻을 수 있에서 쿼리를 가능한 한 다음,해당 값을 연결 XML DOM 으로 필요합니다.

다만 아쉬운 점이 있다 Java 코드를 조금 더 적은 우아한,으로 데이터 가져오기 지 원격에서 사용합니다.하지만 우리를 생성하는 대규모의 복잡한 XML 파일로 제로에 가까운 시간으로 가능한 그래서 우리는 최적화하기 위해 속도입니다.

조심해야를 다룰 경우 merge table 그러나입니다.제 경험에 비추어지만 한 가입할 수 있는 좋은 대부분의 상황에서,때 병합 테이블은 참여할 수 있으로 실행한 상황입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top