2012-07-11 2 views
0

Coldfusion8 및 MySQL 5.0.88을 실행하는 사이트를 상속 받았습니다. 판매자 가격리스트를 포함하는 제품 정보가 포함되어 제품 (), 및 가격리스트 (P) -MySQL에서 Left Join 쿼리 성능을 높이는 방법은 무엇입니까?

나는 두 개의 테이블이있다.

제품은 제품 테이블에서 고유하지만 pricelist 테이블에 여러 항목이 포함될 수 있습니다 (가격표 수에 따라 다름). 내 제품 검색에서

, 나는 에서 제품 정보를 얻을 필요가 있고, 사용자는 판매자에 의해 가격표를 할당하는 경우, 또한 P에서 각각의 가격 목록에서 가격을 잡아해야합니다. 이 작동하는 동안

SELECT count(A.id) AS total 
    FROM arts A 

    <cfif variables.use_pricelists neq ""> 
    LEFT JOIN preislisten p ON 
      A.ean = P.ean 
     AND A.sellerID = p.sellerID 
     AND (
      // precompiled list - hardcoded loop 
      (P.list_name = "-Standard-" AND P.sellerID = "2222222222222") 
      OR 
      (P.list_name = "I" AND P.sellerID = "3333333333333") 
      ) 
    </cfif> 
    WHERE 
    ... 

는 ... 영원히 취

나는 다음과 같습니다 내 실제 제품 쿼리를 수행하기 전에 모든 sellerIDs 및 가격표 이름을 미리 컴파일입니다. pricelists를 확인하지 않고 1 초 이내에 검색을 실행할 수 있습니다. 가격표에 점검이 필요한 경우 7-10 초가 소요됩니다.

질문 :
이이 구문의 다른 유형을 빠르게 수행 할 수 있습니까?

도움 주셔서 감사합니다.

답변

2

이유는 더 나은 성능을 위해, 당신의 열이 당신에게 인덱스를 해달라고 인덱스 구문 만들기 :

이 preislisten (EAN)에 인덱스 idx_ean을 만들

+0

내가 MySQL을 내 첫 달에 여전히 해요입니다. 색인 생성을 시작할 때 좋은 출발점이 있습니까? – frequent

+0

조인을 고려중인 열에 인덱스를 작성하십시오. 구문 구문 작성은 위에 나와 있습니다. –

+0

확인. 감사. 빠른 질문 : 색인 된 필드가 고유해야합니까? ean은 A에서 고유하지만 P에 여러 항목을 가질 수 있습니다 – frequent