加快选择不同的PostGreSQL查询

加快选择不同的PostGreSQL查询,sql,postgresql,distinct,Sql,Postgresql,Distinct,我有一个网络日志列表。每行都有一个时间戳,我需要提取不同的时间戳,以便在以后的查询中使用这些时间戳。目前,我正在使用以下查询: select distinct time from metastatus 现在我首先要确认selectdistinct查询是否返回排序后的值 其次,我已经创建了数据库用于上述查询的时间索引 最后,我确实考虑过检索所有时间,然后通过我的代码找到唯一的值,但是有太多的值让我无法检索所有时间(160000000) 谢谢, James获取PostgreSQL使用的不同的值的常

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

select distinct time from metastatus
现在我首先要确认
selectdistinct
查询是否返回排序后的值

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

最后,我确实考虑过检索所有时间,然后通过我的代码找到唯一的值,但是有太多的值让我无法检索所有时间(160000000)

谢谢,
James

获取PostgreSQL使用的
不同的
值的常用方法是对行进行排序,然后从每组中选择第一个。这就是为什么你通常会得到一个排序的结果,但是Postgres对排序没有任何要求。只需添加一个与
DISTINCT
子句一致的
orderby
。无论如何,从文档的角度来看,它更好。通常不需要额外的费用。检查
解释分析
以确认


检索所有行并在Postgres之外排序的想法是毫无意义的。这甚至不可能接近RBDM的性能,RBDM针对这类任务进行了优化。你也会在电线上传递相当多的噪音。考虑下面的答案。

< P>获取PostgreSQL所使用的<代码>不同的值的常用方法是排序行,然后选择每组的第一个。这就是为什么你通常会得到一个排序的结果,但是Postgres对排序没有任何要求。只需添加一个与
DISTINCT
子句一致的
orderby
。无论如何,从文档的角度来看,它更好。通常不需要额外的费用。检查
解释分析
以确认


检索所有行并在Postgres之外排序的想法是毫无意义的。这甚至不可能接近RBDM的性能,RBDM针对这类任务进行了优化。你也会在电线上传递相当多的噪音。请考虑下面的答案。

我现在正在运行一个查询,用时间索引来聚类数据库,即使用时间索引< /Cords> <代码> Studio AutoStudio。优化器可能会决定对值进行排序以生成不同的列表,但这不是它唯一的方法。谢谢,我使用了
order by
,但我删除了它,因为我看到它返回了有序值,并假设它每次都这样做。我会把它放回去。我目前正在运行一个查询,以按时间索引对数据库进行聚类,即使用时间索引对群集元状态进行聚类。Select distinct不保证排序值,最后需要一个order by。优化器可能会决定对值进行排序以生成不同的列表,但这不是它唯一的方法。谢谢,我使用了
order by
,但我删除了它,因为我看到它返回了有序值,并假设它每次都这样做。我会把它放回去。我知道SQL查询的性能可能比我编写的任何行排序代码都要好。无论如何,我并没有通过我的代码来做这件事,因为有太多的行,正如您所说的,它可能会变慢。我只是想尝试两种方法来比较时间,这是我提到它的唯一原因,但这是不可能的。这是一个糟糕的建议。大型表上的
order by
的性能可能比
select distinct
查询更差。我知道SQL查询的性能可能比我编写的任何行排序代码都要好。无论如何,我并没有通过我的代码来做这件事,因为有太多的行,正如您所说的,它可能会变慢。我只是想尝试两种方法来比较时间,这是我提到它的唯一原因,但这是不可能的。这是一个糟糕的建议。大型表上的
orderby
可能比
selectdistinct
查询的性能更差。