programing

Oracle SQL에서 전체 테이블이 아닌 테이블의 파티션을 쿼리하여 더 빠르게 실행할 수 있습니까?

starjava 2023. 10. 9. 21:16
반응형

Oracle SQL에서 전체 테이블이 아닌 테이블의 파티션을 쿼리하여 더 빠르게 실행할 수 있습니까?

7-24-2016년에 기록이 있는 'FooBar'라는 고객을 대상으로 100만 건의 기록이 있는 표를 문의하고자 합니다.그 표에는 10일간의 자료가 들어있습니다.

select * 
from table
where customer = 'FooBar'
and insert_date between to_date('2016-07-24 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and to_date('2016-07-24 23:59:59', 'YYYY-MM-DD HH24:MI:SS');

위 쿼리의 문제점은 실행하는 데 시간이 오래 걸린다는 것입니다.좀 더 빨리 달리면 좋겠습니다.

그 테이블은 24시간으로 나누어져 있습니다.테이블 파티션에 쿼리의 초점을 맞출 수 있을까요?그러면 쿼리 실행 속도가 더 빨라질까요?

select *
from partition-7-24-2016
where customer = 'FooBar'; 

정확한 구문은select [columns] from [table] partition ([partition]). 그렇다면, 이 사용 사례에서는 다음과 같은 것이 있습니다.

SELECT *
FROM   mytable PARTITION (partition_7_24_2016)
WHERE  customer = 'FooBar'; 

이렇게 할 수 있습니다.

select * from table PARTITION FOR (date '2016-07-24') where customer = 'FooBar'
and insert_date between to_date('2016-07-24 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and to_date('2016-07-24 23:59:59', 'YYYY-MM-DD HH24:MI:SS');

이렇게 하면 파티션에서 날짜가 다음에 해당하는 행만 찾습니다.date '2016-07-24'이 예에서는

괄호 안에 파티션 값을 입력해야 합니다.또한 색인을 작성한 경우에는 로컬인지 확인하고, 그렇지 않은 경우에는 테이블 자체에서 선택하는 것보다 크게 개선되지 않습니다.

언급URL : https://stackoverflow.com/questions/38578004/in-oracle-sql-can-i-query-a-partition-of-a-table-instead-of-an-entire-table-to

반응형