keyedTable,indexedTable以及keyedStreamTable的区别

请问在DolphinDB中,keyedTable,indexedTable以及keyedStreamTable这3种类型的内存表有什么区别?

请先 登录 后评论

1 个回答

Qing Li

相同点

  1. 该表的主键不允许包含重复值。主键支持一个或多个字段。

不同点

1.索引内存表是DolphinDB中支持键值字段的内存表,通过指定表中的一个或多个字段作为键值字段。与键值内存表类似,索引内存表也支持增删改查等操作,键值字段也不允许更新。与键值内存表的不同之处在于,在查询时,只需指定第一个键值字段,无需指定全部的键值字段即可快速返回结果。

测试

id1=shuffle(1..1000000)
id2=shuffle(1000001..2000000)
val=rand(100.0, 1000000)
t1=keyedTable(`id1`id2, id1, id2, val)
t2=indexedTable(`id1`id2, id1, id2, val);

timer(100) select * from t1 where id1=100 and id2=1000001;
Time elapsed: 1 ms
timer(100) select * from t1 where id1=100;
Time elapsed: 130.576 ms
timer(100) select * from t2 where id1=100 and id2=1000001;
Time elapsed: 4.049 ms
timer(100) select * from t2 where id1=100;
Time elapsed: 3.119 m

2.keyedStreamTable保留第一条,keyedTable,indexedTable保留最新一条

3.keyedStreamTable可以被订阅,keyedTable,indexedTable不可以被订阅

请先 登录 后评论