首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >窗口函数的工作和窗口函数的概念窗口大小

窗口函数的工作和窗口函数的概念窗口大小
EN

Database Administration用户
提问于 2012-03-23 03:15:54
回答 1查看 541关注 0票数 2

我无法理解窗口函数的概念。它们究竟是如何工作的,这种技术的利弊是什么?

我读过,使用限制和偏移是缓慢的,但它仍然使用。因此,在限制/偏移和窗口函数之间的决定取决于从db或窗口函数获取的数据的大小,还是应该始终使用?

什么是理想的窗口大小,以获得最大的性能从这?如果要获取的行数较少,那么只需使用极限/偏移量,这种情况会发生吗?

我的用例基本上需要按日期对数据进行排序,然后将最新数据放在第一位。在这种情况下,窗口功能是如何适应的。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2012-03-23 06:44:24

基本的区别是,窗口函数应用于结果集中的所有行,以便在结果集的其余部分确定后计算额外的列。没有一行被丢弃。它们可以从PostgreSQL 8.4开始使用。

另一方面,LIMITOFFSET命令的SELECT子句不计算其他列。他们只是从结果集中(与ORDER BY子句合作)选择一个特定的行“窗口”,然后丢弃其余的行。永远都在那里。

虽然某些任务可以使用这两种工具中的任何一种来完成,但它们本质上是非常不同的。

为了你的简单任务

按日期对数据进行排序,然后将最新数据放在首位。

你不需要他们两个人。只需添加:

代码语言:javascript
运行
AI代码解释
复制
ORDER BY date_col DESC

根据你的评论,你需要:

代码语言:javascript
运行
AI代码解释
复制
SELECT col1, col2
FROM   tbl
ORDER  BY date_col DESC
LIMIT  100   -- 100 latest rows
OFFSET 0;    -- just noise, but may be easier to code

检索更多:

代码语言:javascript
运行
AI代码解释
复制
...
LIMIT  100
OFFSET 100;  -- next page of 100 rows ...

无论是哪种情况,都要确保在date_col上有一个索引!

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/15457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档