지난 2 년 동안 대략 200 일 동안의 목록을 보려면 KDB 데이터베이스의 데이터를 가져오고 싶습니다. 200 일은 특별한 패턴이 아닙니다.처리하기에 너무 무거운 KDB +/Q 쿼리
나는 매일 09:29:00.000 to 09:31:00.000
의 데이터 만 필요합니다.
내 첫 번째 방법은사이의 시간 스탬프가있는 지난 2 년 동안의 데이터를 모두 쿼리하는 것이 었습니다. 필자가 원하는 특정 200 일을 쿼리하는 방법을 찾지 못했기 때문입니다. 그러나 이것은 내 서버가 처리하기에는 너무 많은 것으로 판명되었습니다.
그런 다음 각 날짜의 2 분 데이터를 평균으로 요약하고 평균을 인쇄하려고 했으므로 이제는 출력으로 200 행의 데이터 만 갖게됩니다. 그러나 어쨌든 이것은 여전히 너무 많은 것으로 밝혀졌습니다. 데이터를 올바르게 선택하지 않기 때문에 이것이 맞는지 확실하지 않습니다.
또 다른 의문점은 쿼리가 모든 데이터를 처음으로 가비로 처리하고 각 데이터의 평균을 계산한다는 것입니다. 즉, 평균화는 처리하기 쉽지 않습니다.
select maxPriceB:max(price), minPriceB:min(price), avgPriceB:avg(price), avgSizeB:avg(qty) by date from dms where date within(2015.01.01, 2016.06,10), time within(09:29:00.000, 09:31:00.000), sym = `ZF6
리딩 데이터가 ZFU6에있는 테이블 내가 선택 후 별개의 핵심 단어를 추가하는 시도 찾고 메신저 상징이다 : 여기 내가 가지고있는 코드입니다. 어쨌든 쿼리를 분리하거나 서버가 처리 할 수 있도록 쿼리를 더 가볍게 만들 것인지를 알고 싶습니다. 감사합니다.
? 이것이 다른 RDBMS라면 (날짜, 시간) 튜플에 클러스터 된 인덱스를 사용했을 것입니다. – wilx
@wilx 죄송합니다. KDB와 데이터베이스 전반에 대해 매우 익숙합니다. 인덱스 란 정확히 무엇입니까? – casualprogrammer
대부분의 경우 "색인"(속성)이 sym 열에 있습니다. 따라서 where 절의 순서는(), sym ='ZFU6, time within() 내에 있습니다. – terrylynch