查询分布式表有点慢,感觉有问题,请帮忙分析一下

发布于 2022-09-12 04:08:21 字数 558 浏览 19 评论 0

我导入csv数据到DolphinDB分布式表中,代码如下:

db = database("dfs://kqdb", VALUE, 1970.01M..2020.12M)
pt = db.loadTextEx(db, `kq,`time, "/usr/database/kq.csv");

导入后,我查询一年的数据,代码如下:

kq=database("dfs://kqdb").loadTable("kq")
select count(*) from kq where temporalFormat(time,"yyyy-MM-dd")>='2019-01-01' and temporalFormat(time,"yyyy-MM-dd")<='2019-12-31' and grade=10 and class=1  group by status

一年的数据约20多万行,查询花了31s多(如下图所示),我感觉有问题,不至于要30多秒吧?

image.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

思念满溢 2022-09-19 04:08:21

where条件要优化一下,写成如下:

select count(*) from kq where time between 2019.01.01T00:00:00 : 2019.12.31T23:59:59 and grade=10 and class=1  group by status

DolphinDB在解决海量数据的存取时,并不提供行级的索引,而是将分区作为数据库的物理索引。系统在执行分布式查询时,首先根据WHERE条件确定需要的分区。大多数分布式查询只涉及分布式表的部分分区,系统不必全表扫描,从而节省大量时间。但若不能根据where条件确定分区,就会全表扫描,影响查询性能。详情可参阅分区设计教程第7节。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文