1

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

select distinct time from metastatus

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

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

最后,我确实考虑过检索所有时间,然后通过我的代码找到唯一值,但是对于我来说,检索所有时间(160,000,000)的值太多了。

谢谢,詹姆斯

4

1 回答 1

1

获取DISTINCTPostgreSQL 使用的值的常用方法是对行进行排序,然后选择每组中的第一个。这就是为什么你通常会得到一个排序的结果,但 Postgres 对顺序没有任何断言。只需添加一个ORDER BY同意该DISTINCT条款的内容。无论如何,从文档的角度来看它会更好。通常不会花费任何额外费用。检查EXPLAIN ANALYZE以确认。

在 Postgres 之外检索所有行并进行排序的想法是无稽之谈。这甚至不可能接近针对此类任务进行了优化的 RBDMS 的性能。您还会通过电线传输相当多的噪音。考虑这个相关问题下的答案。

于 2012-12-04T11:48:11.857 回答