첨부 된 테이블은 앞의 각 테이블에있는 행 수를 나타 내기 위해 각 테이블 옆에 주석이있는 내 스키마를 배열하는 fiddle입니다. 그러나 나는 몇 가지 단계 곳이 수행Explain plan 15 분석 기능을 사용하는 쿼리에 필요한 Exabyte 공간 및 고유함
select distinct cat_name,cat_age, co_cat_owners_id,cat_weight,cs_is_alive,os_is_current, cos_is_current,
sum(cat_age) over(partition by co_cat_owners_id) running_total
from
(
select co.cat_owners_id co_cat_owners_id,
co.cat_id co_cat_id,
co.owner_id co_owner_id,
co.vet_id co_vet_id,
cos.is_current cos_is_current,
os.is_current os_is_current,
cs.is_alive cs_is_alive,
cat.name cat_name,
cat.age cat_age,
cat.weight cat_weight
from cat_owners co,
cat_owner_statuses cos,
cat_statuses cs,
cats cat,
owners o,
owner_statuses os
where o.owner_id = co.owner_id
and cat.cat_id = co.cat_id
and cos.last_visit >= sysdate - 4/24
)
where cs_is_alive = '1'
and (cos_is_current = '1' OR os_is_current='1')
group by cat_name,cat_age,cat_weight,cs_is_alive,os_is_current,co_cat_owners_id,cos_is_current;
내 개발 환경에서 계획 단계의 측면에서, 바이올린 내부에 무엇에 매우 밀접하게 배치합니다 설명 : 쿼리는 바이올린이 차단되는 경우에, 그래서처럼 보인다 메모리 크기는 행 개수가 4000P (페타 바이트) 인 15E (엑사 바이트)입니다. 내 질문은 어디에 색인 생성/나쁜 SQL의 라인을 따라 내가 15 이하의 공간과 시간에 해결할 수 있어야 문제에 대한 엑사 바이트 솔루션을 생성 할 수 있었다. 복합 인덱스 생성 단계를 약간 조정하면 약간 다른 결과가 나타 났지만 Exabyte 공간 요구 사항에 의해 여전히 차단됩니다. 미래의 경우 사람에
참고
은 도움이 조인 올바른와 함께 다음과 같은 기능을 실행하고, 의견을 모두 읽지 않습니다 :
analyze table table_name_here compute statistics;
물론, 그 계획은 그다지 두려워하지 않을 것입니다. 매번 전체 테이블 스캔을 먹어야하는 것처럼 보일 것입니다.이 경우에는 15 엑사 바이트의 임시 공간을 파티셔닝하는 것보다 효율적입니다. – Woot4Moo
@ Woot4Moo - 전체 테이블을 스캔하고 있습니까? 피들에 대한 쿼리 계획은 테이블 스캔을 수행하지 않습니다. 물론 일부 테이블의 전체 테이블 스캔이 실제 시스템에서 더 효율적일 수 있습니다 ... –
oops 테이블 스캔으로'인덱스 전체 스캔 '을 잘못 읽었습니다. – Woot4Moo