用于获取最新行的SQL查询 - 针对Vertica DB进行了优化

时间:2012-09-21 16:50:36

标签: sql vertica

我这里有一张桌子,里面有数百万条。该表存储事件,每个事件都有一个时间戳。给定一些WHERE子句参数,我想要最近的事件。

这就是我们提出的:

SELECT * 
FROM eventTable 
WHERE timestamp_date >= '2012-07-16' AND 
      eventType = 1  AND someOtherField = 'value' 
ORDER BY timestamp DESC 
LIMIT 1;

目前回归的时间太长了。有没有办法改变SQL以便更快地提供我们想要的东西?此外,这样的事情是否有投射策略?

感谢 何

1 个答案:

答案 0 :(得分:1)

基本上,您希望根据order by子句中的timestamp列优化至少一个投影。如果你正确地进行了预测,这应该非常快。

编辑:只是一个澄清的说明。我并不是要暗示时间戳列应该是order by子句中的唯一字段。此外,正如下面的评论中所提到的,在这种情况下,数据库设计器上的特定于查询的运行不会是坏事。我相信可以选择优化速度。由于你正在做“选择*”,输出应该可以作为超级和好友的预测。