我为我的交易数据使用标准的张开格式,其中我有每个日期的目录和每一列作为单独的文件。我正在读取 csv 文件并使用以下代码进行存储。我在 win 7、64 位上使用 32 位试用版。
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 行。选择时间为一天的 0.5 到 1 秒有没有办法改善以下任一查询的时间。
\t select from trade where date=x
\t select from trade where date=x, sym=y
我已阅读有关分段、分区等的文档,但不确定是否有任何帮助。
再想一想,为每个 sym 创建一个表会加快速度吗?我正在尝试,但想知道是否有我应该注意的内存/空间权衡。