나는 각 행에 Point (위도와 경도)가 포함 된 ~ 40k 행의 샘플 세트를 포함하는 테이블을 가지고있다. MySQL의 공간 확장을 사용하여 경계 내에있는 점을 찾습니다.MySQL에서 가능한 인덱스를 사용하지 않습니다 - 왜?
결과가 거의 없다는 것을 알고있는 경계에서 검색하면 인덱스가 그대로 사용됩니다. 그러나 테스트 데이터 세트는 주로 영국 주변 지역으로 구성됩니다 (더 큰 실제 데이터 세트는 백분율로 비슷합니다). 나는이 경계 상자 내에서 검색 할 때 인덱스가 사용하지 않는 대신 전체 테이블 스캔이 수행됩니다 : MySQL은 행의 수는 예상 할 때 인덱스를 무시하는 결정하는 것처럼
이id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE ep ALL PRIMARY,location NULL NULL NULL 37221 Using where
그래서 보인다 찾을 수있는 총 행 수에 가깝습니다.
이 경우이 경우 색인을 강제로 사용하거나 그렇지 않으면 전체 테이블 스캔을 피할 수 있습니까?
질문하기 예상 할 수있는 결과는 많은 결과를 얻을 수 있다는 것입니다. 이 경우 필요하지 않기 때문에 많은 결과를 반환하기 위해 인덱스를 탐색해야합니다. –
또한'table_structure'를 게시 할 수 있다면 좋을 것입니다. –