반응형
ST_CONTENS를 통한 성능 저하
다중 폴리곤의 경우 JOIN을 사용하여 간단한 sql 쿼리를 연결했습니다.
SELECT `oktmo_geometry`.`oktmo` FROM `place`
INNER JOIN `oktmo_geometry` ON ST_CONTAINS(`oktmo_geometry`.`geometry`, Point(`place`.lng, `place`.lat))
하지만 그 질문은 매우 느리다.나는 12,000개의 장소와 300개의 기하학이 있다.50개 장소에서만 3-5초 소요됩니다(버전에 따라 다름).MariaDB를 사용해 봤는데 MySQL보다 50배 이상 빠릅니다만, 아직 느린 것 같습니다.
혹시 제 질문이나 다른 문제라도 있나요?
oktmo_geometry
.geometry
다중 폴리곤 타입입니다.
속도 중 상당 부분이 여기서 손실됩니다.Point(`place`.lng, `place`.lat)
이것은 색인화할 수 없습니다. 그래서 원칙적으로 모든 것을 통과해야 합니다.`place`
행을 지정하여 검색을 완료합니다.
더 나은 해결책은 다음과 같은 새로운 컬럼을 만드는 것입니다.`place`.pointvalue
그것은 Point에서 파생된 점 데이터 유형이다.`place`.lng
,`place`.lat
) 、 index ), 、 [ Index ]`place`.pointvalue
.
그러면 당신의 질문은
SELECT `mo_geometry`.`oktmo` FROM `place`
INNER JOIN `oktmo_geometry` ON ST_CONTAINS(`oktmo_geometry`.`geometry`, `place`.pointvalue)
나는 그것이 훨씬 더 빨리 진행될 것이라고 생각한다.
언급URL : https://stackoverflow.com/questions/43977969/slow-performance-with-st-contains
반응형
'programing' 카테고리의 다른 글
윈도우 리터레이터를 롤링 또는 슬라이딩합니까? (0) | 2022.11.06 |
---|---|
mysql에서 올바른 형식 및/또는 유효한 지오메트리를 확인합니다. (0) | 2022.11.06 |
VUEX가 변환을 찾지 못했지만 정의되어 있습니다. (0) | 2022.11.06 |
MySQL 오류 #1133 - 사용자 테이블에서 일치하는 행을 찾을 수 없습니다. (0) | 2022.11.04 |
파손된 xampp 'mysql.user' 테이블 복구 방법 (0) | 2022.11.04 |