programing

ST_CONTENS를 통한 성능 저하

shortcode 2022. 11. 6. 16:22
반응형

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

반응형