디지털 오션 서버에 데이터베이스가 있는데 가끔 느린 것 같습니다 (때로는 1 초 이상). postgis가있는 Postgresql이 실행 중입니다.Postgis 최적화 쿼리 및 성능 이해
하우스 : 지난 24 시간 동안 온라인왔다 190000
SELECT count(*) from houses;
하우스 : 58000
여기 실제로 그냥 아파트를 저장하는 데이터베이스 주택에 대한 통계입니다SELECT count(*) FROM houses
JOIN (select max(last_seen) as last_ts from houses) as dt
ON last_seen >= dt.last_ts - interval '24 hour';
특정 지역에 있고 활동중인 주택 : 3086
select count(*) from houses
where ST_DWithin(geom, ST_MakePoint(52.5277411, 13.4)::geography,30000)
(active IS NULL OR active = TRUE)
여기에 조금 느린 실제 SQL 쿼리입니다. 느린는 하나 개의 쿼리 때로는 더 다음 일초 소요 의미
SELECT
*,
ST_DistanceSphere(geom, ST_MakePoint(52.5277411, 13.4)) as distace
FROM houses
JOIN (select max(last_seen) as last_ts from houses) as dt
ON last_seen >= dt.last_ts - interval '24 hour'
WHERE
ST_DWithin(geom, ST_MakePoint(52.5277411, 13.4)::geography,30000)
AND (active IS NULL OR active = TRUE)
내가 지금까지 시도 무엇. 약간의 중복이기 때문에 조인을 제거하십시오. 색인을 소개하십시오. 그
어떤 생각을 개선 할 수있는 방법 : 여기
쿼리의 설명이다? 고마워요!추신 : 일부 데이터가 누락되었습니다. 알려 주시면 알려 드리겠습니다. 많은 사람들이 도움을 시도하고 내 최종 솔루션을 게시 할 정말 좋은 조언을 준 이후
0) 계획이 * * * bad ... 1) 질문에 DDL을 추가하지 않습니다. 2) geom에 공간 인덱스가 있습니까? 3)'EXPLAIN' 대신'EXPLAIN ANALYZE'를 입력하십시오. – wildplasser
안녕하세요. geom에 공간 인덱스가 있습니다. 질문에 EXPLAIN ANLYZE를 사용하여 쿼리와 인덱스를 첨부했습니다. 그것을 살펴 줘서 고마워. – MichaelRazum
BTW : 대부분의 경우, 부울 열을 NULL 가능으로 정의하는 것은 의미가 없습니다. 'AND (활성 IS NULL 또는 활성 = TRUE)'(여기에서 조건부 색인을 고려할 수 있음) – wildplasser