2011-11-21 2 views
3

인벤토리 데이터베이스를 업그레이드 중이므로 쿼리의 속도를 높이고 싶습니다. 정렬의 범위는 각각 범위 인 2 개의 열에 있습니다. 예를 들어.MySQL의 비 공간 데이터에 R-tree 인덱스 사용

SELECT .... 
WHERE price BETWEEN 10.50 AND 34.20 
AND date BETWEEN 1311264060 AND 1313942460 
ORDER BY stockNo LIMIT 100 

범위가 사용되므로 MySQL은 한 열에 만 인덱스를 사용할 수 있음을 알고 있습니다. 즉, 인덱스를 사용하여 가격 범위와 일치하는 레코드를 추출 할 수 있지만 그 다음 날짜 범위와 일치하는 레코드를 찾기 위해 테이블 ​​스캔을 사용해야합니다.

나는 가격과 데이터가 x 축과 y 축이었으며, 공간 데이터 컬럼을 채우고 MySQLs의 공간 검색과 R-TREE 인덱스를 이용하여 데이터를 추출했다.

누구나 R-TREES의 경험이 있습니까? 이게 나에게 속도 향상을 줄 수 있니?

답변

2

R-trees는 크기가 유사한 의미를 갖는 데이터에 가장 적합합니다. 위치 좌표와 같은 창 쿼리를 수행합니다.

데이터에는 R- 트리에 영향을 줄 수있는 몇 가지 효과가있을 수 있습니다. 예를 들어 가격에는 여러 가지 값만 있고 날짜 범위에는 완전히 다른 척도가 없습니다. "볼륨"과 "영역"과 같은 많은 R-tree 최적화 전략은 실제로 가격 차이와 시간차의 제품을 계산할 때별로 의미가 없습니다.

R 트리가 여전히 작동 할 수 있습니다. 그러나 kB 나무와 비슷한 나무를 사용하는 것이 좋습니다. MySQL에이 모든 것이 포함되어 있는지 확실하지 않지만, 그렇게 생각하지는 않습니다 (일반적으로 모든 고급 기능이 없습니다).