gpt4 book ai didi

sql - PostgreSQL Distinct 和 Format 的最快方法

转载 作者:行者123 更新时间:2023-11-29 11:16:31 25 4
gpt4 key购买 nike

我在表 acs_objects 中有 350 万行,我需要检索列 creation_date 且只有年份格式且不同。

我的第一次尝试:180~200 秒(获取 15 行)

SELECT DISTINCT to_char(creation_date,'YYYY') FROM acs_objects

我的第二次尝试:35~40 秒(获取 15 行)

SELECT DISTINCT to_char(creation_date,'YYYY')
FROM (SELECT DISTINCT creation_date FROM acs_objects) AS distinct_date

有没有办法让它更快? -“我需要在 ADP 网站中使用它”

最佳答案

我认为你不应该从这个巨大的表格中选择 distinct。相反,尝试生成一个简短的 years sequence (比如从 1900 年到 2100 年)并从此序列中仅选择 acs_objects 表中存在的年份。结果集将是相同的,但我认为它会更快。 EXISTS 子查询必须在索引字段 creation_date 上快速运行。

SELECT y 
FROM
(
select generate_series(1900,2100) as y
) as t
WHERE EXISTS (SELECT 1 FROM acs_objects
WHERE creation_date >= DATE (''||t.y||'-01-01')
AND creation_date < DATE (''||t.y + 1||'-01-01'))

SQLFiddle demo

关于sql - PostgreSQL Distinct 和 Format 的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30253641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com