我有一张3M行表。
我想检索所有这些行并使用dc.js
进行可视化。
我遇到的问题是,对于单个列,它需要大约70秒。
如果我编写查询,则需要大约240秒来检索这些行。
我正在使用像这样的列上的select查询。
SELECT COL1, COL2 FROM TABLE
就是这样。没有分组,没有。
但这需要很多时间。
听说索引,我为我使用的列创建了一个索引。但即使没有取得丰硕成果。
答案 0 :(得分:0)
我们不应该在任何查询中检索3M行。发送3M记录总是需要花费很多时间(与数据库无关,这是传输速度)。它会杀死你的IO。大部分时间是来自请求发起者和postgres数据库的传输(IO)。
考虑将这些请求分解为批量传输到客户端的异步请求。这意味着重组您的前端代码(javascript)以改善用户体验。
答案 1 :(得分:0)
您没有指定使用PostgreSQL的环境。
例如,在Node.js中,您可以通过在pg-query-stream的帮助下流式传输数据并在客户端同时呈现数据来解决此问题,因此客户端无需等待查询完成后可以看到中间结果。
但这可能不是最好的解决方案。更好的解决方案是在数据库函数中实现数据聚合,以提供更小的数据子集。