비록 당신에게 외삽 수 쓰기 코드 날짜 (예 : VikramJain의 recursive CTE (SQL Server 용)) CPU가 무겁습니다. 많은 양의 레코드가있는 경우, 많은 시간 범위에 걸쳐 반복적으로 많은 양의 데이터가 생성됩니다. 그리고 데이터를 쿼리 할 때마다이를 수행합니다. 지금까지 가장 효율적인 CPU 효율적인 방법은 단순히 다른 테이블을 만드는 것입니다.
데이터베이스를 차원 테이블과 팩트 테이블로 생각하면 시작 날짜와 종료 날짜는 암시 된 차원 인 Time
의 키일뿐입니다. 암시 적이 아니라 명시 적으로 Calendar
테이블을 작성하십시오. 그렇다면 사소한 일입니다 ...
이것은 엄청난 양의 CPU 부하를 줄이고 쿼리를 대폭 간소화합니다.
일단 테이블을 만들면 필요로하는 모든 항목이 포함 된 날짜가 미리 채워지고 많은 지저분한 날짜 조작이 간단한 인덱서 블 조회가됩니다.
심지어 같은 해당 테이블의 메타 데이터를 추가 할 수 있습니다 ..
- start_of_week
- start_of_month
- financial_year
- 등 등
어떤 사람들은 이것을 비판 부끄러움 같이. 개인적으로 나는 반대를 느낄 :
를 - 그것은 지저분한 날짜를 기반으로 계산
를 캐시 - 그것은 명시 적으로 그것은 심지어는 테라 데이타가 매우 좋은 효과를 사용되는 차원 테이블
를 작성 sys_calendar.calendar
은.
루프 또는 날짜 조회 테이블을 사용하거나 프런트 엔드에서 사용하십시오. 당신은 그게 효과가 없었던 무엇을 시도 했습니까? –
직접 해봤습니까? 어떤 DB 엔진을 사용하고 있습니까? '총 일 '은 중복되지 않습니까? –
이 절차를 작성할 수 있습니다. – Suranga