加快选择不同的PostGreSQL查询

时间:2012-12-04 11:33:10

标签: sql postgresql distinct

我有一份网络日志列表。每行都有一个时间戳,我需要提取不同的时间戳,以便我可以将它们用于以后的查询。目前我正在使用以下查询:

select distinct time from metastatus

现在我首先要确认select distinct查询是否返回排序值?

其次,我已经创建了一个数据库用于上述查询的时间索引。

最后,我确实考虑过一直检索,然后通过我的代码找到唯一值,但是我有太多的价值可以检索所有的时间(160,000,000)。

谢谢, 詹姆斯

1 个答案:

答案 0 :(得分:1)

获取PostgreSQL使用的DISTINCT值的常用方法是对行进行排序,然后选择每个集合中的第一个。这就是为什么你通常得到一个排序结果,但Postgres没有断言订单。只需添加一个与ORDER BY子句一致的DISTINCT即可。从文档的角度来看,无论如何都要好一些。通常不会花费额外的费用。请与EXPLAIN ANALYZE核实确认。

在Postgres之外检索所有行和排序的想法是无稽之谈。这甚至不可能接近RBDMS的性能,RBDMS针对这样的任务进行了优化。你还会在电线上传输相当多的噪音。考虑此related question下的答案。