【发布时间】:2015-02-19 15:37:32
【问题描述】:
我有一张这样的桌子
--------------------
| color | date |
--------------------
| red | 01/01/10 |
| blue | 01/07/10 |
| ... |
我想选择每种类型的最大日期。简单的方法(真的)性能很差。即:
SELECT color, MAX(date)
FROM myTable
WHERE color = ANY(ARRAY('red', 'blue'))
GROUP BY date;
以下查询有什么好的表现。我认为这是因为日期索引。
SELECT color, date
FROM myTable
WHERE color='red'
ORDER BY date
LIMIT 1
问题是我没有相同的结果。我想找到一种方法来使用第二个版本来获得与第一个查询相同的结果。
也许我可以使用循环并选择每个结果的并集。这甚至可能吗?
欢迎任何其他想法?
【问题讨论】:
-
您的索引是什么样的?您需要聚合才能获得相同的效果
-
另外,
IN(ARRAY('red', 'blue')有多个严重问题,请更新您的问题以包含您的真实问题。
标签: sql postgresql