首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高效的top K PostgreSQL

高效的top K PostgreSQL
EN

Stack Overflow用户
提问于 2017-11-29 19:19:23
回答 1查看 288关注 0票数 1

我在PostgreSQL中有一个很大的表,我需要获取前K个元素。有没有办法在O(N logK)中选择前K个条目?

最明显的例子:

代码语言:javascript
复制
SELECT *
FROM table
ORDER BY col
LIMIT k

将给我们类似于O(N logN)的解决方案

代码语言:javascript
复制
sorted(arr)[:k] # in python

有没有一种SQL方法可以使用堆来实现这一点?

如下例所示:

代码语言:javascript
复制
from heapq import nsmallest
nsmallest(k, arr)

使用最小堆的O(N logK)是什么?

EN

回答 1

Stack Overflow用户

发布于 2017-11-29 21:32:29

预先在列上创建索引(例如,btree)将大大加快该列上的排序速度。在插入期间,您将获得一些开销,但如果您在指定列上有大量相同形式的查询,这将是值得的。我在this page (在“使用索引进行排序”下)上找到了关于你所要求的查询的有趣信息/实验。

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

https://stackoverflow.com/questions/47551567

复制
相关文章

相似问题

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