MySQL에서 category_id, subcategory_id 및 zipcode가있는 매우 큰 테이블 (3M 레코드 이상)을 쿼리하고 있습니다. 우편 번호는 DB에 10 자일 수도 있고 그렇지 않을 수도 있습니다.MySQL 첫 번째 문자열의 인덱스
목적은 지정된 zip의 특정 반경 내에있는 모든 cat/subcat 항목을 가져 오는 것입니다. 하나의 지정된 5 자리 우편 번호 목록을 반환하는 함수가 있습니다. 이 목록은 다음
SELECT whatever
FROM tblName
WHERE cat_id = 1
AND subcat_id = 5
AND LEFT(zip,5) IN (11111,22222,33333,44444,55555)
내가 CAT_ID, subcat_id 및 우편에 복합 인덱스를 가지고 ... 그래서처럼 내 쿼리에 공급되지만, 우편 어떤 경우에는 10 자이를 던질 수있는. LEFT (zip, 5)을 어떻게 든 색인 할 수 있습니까?
는이 쿼리에 대한 쿼리 계획을 가지고 적이 있습니까? 그게 어떻게 currenlty working.Instructions 다른 인덱스에 대해 생각하기 전에 그 정보를 가지고 있어야 유용합니다. –
아니요, 인덱스에 함수를 사용할 수 없습니다. Oracle과 PostgreSQL에서는 가능하지만 MySQL에서는 그렇지 않습니다. – Johan
"쿼리 계획"이란 EXPLAIN ... 쿼리를 실행한다는 의미입니까? 나는 그것에 대해 생각하지 않았다. 감사. @ 조한 : 나는 오라클에 대해 생각하고 있었다. 오랫동안 PL/SQL을 사용해 왔고,이 아이디어가 가능해 보였다. – Don