2013-05-10 5 views
2

날짜별로 파티션 된 내 로컬 컴퓨터에서 거래 데이터베이스를 만들었습니다.kdb에서 select를위한 시간을 개선하는 방법

select from trade where date=x 

약 100 밀리 초 걸리지 만 내가 할 때

select from trade where date=x,sym=`alpha 

는 ~ 1-3초 소요됩니다.

트릭이 있습니까 (`g#sym을 사용하면 'par).

답변

1

dbmaint.q를 사용하여 파티션 된 테이블에 속성을 적용 할 수 있습니다. here을 참조하십시오. 특히 setattrcol 함수를 살펴보십시오. 속성을 추가하면 쿼리의 속도가 크게 빨라집니다. 가능한 경우 id 열에 p #을 사용하는 것이 좋습니다. 이는 조회에 더 빠르지 만 유지 관리하기가 더 어렵습니다.

+0

나는 setattrcol [':/kdb/testdb;'trade;'sym;'p #]를 시도했다. 그것은 나에게 타입 에러를 준다. dbmaint.q 주어진 샘플 db 함께 시도하고 괜찮 았지만 내 샘플 db 함께 형식의 오류를 제공합니다. 나는 샘플 DB를 만드는 동안 뭔가를 놓친 경우 확인하려고합니다. 명백한 실수를 아는 경우 pls에게 조언합니다. –

+0

테이블의 메타를 줄 수 있습니까? p #을 적용하려면 sym 열이 올바르게 정렬되었는지, 즉 각 sym에 대한 모든 레코드가 서로 정렬되어 있는지 확인해야합니다. 또 다른 한가지는 위의 전화를 믿는다는 것입니다. 그냥 [:/kdb/testdb; trade; sym; p]이어야합니다 (필요한 백 틱이 있어야 함). 다음 – user1895961

+0

메타는 C \t톤 \t F \t 날짜 \t "D"\t \t S 가 \t "F"\t \t SYM \t "S"\t \t symType \t "S"\t \t 만료 trdId \t "d"\t \t 옵션 \t "s"\t \t corpAction \t "s""\t 파업 \t "F"\t \t 시간 \t "V"\t \t 가격 \t "F"\t \t 수량 \t "F" –