私は取引データに標準のスプレイ形式を使用しています。そこでは、各日付と各列のディレクトリがそこに個別のファイルとしてあります。csv ファイルから読み取り、以下のコードを使用して保存しています。win7、64bitで試用版32bitを使用しています。
readDat: {[x]
tmp: read data from csv file(x)
tmp: `sym`time`trdId xasc tmp;
/trd: update `g#sym from trd;
trade:: trd;
.Q.dpft[`:/kdb/ndb; dt; `sym; `trade];
.Q.gc[];
};
\t readDat each 50#dtlist
`g#sym を使用する場合と使用しない場合の両方を試しました。データには通常、日付ごとに 1.5MM 行があります。これの選択時間は、1 日で 0.5 から 1 秒です。以下のクエリのいずれかの時間を改善する方法はありますか。
\t select from trade where date=x
\t select from trade where date=x, sym=y
セグメンテーション、パーティショニングなどに関するドキュメントを読みましたが、ここで何か役立つかどうかはわかりません。
よく考えてみると、シンボリックごとにテーブルを作成すると速度が上がるのでしょうか? 私はそれを試していますが、知っておくべきメモリ/スペースのトレードオフがあるかどうかを知りたいと思っていました.