首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >PostgreSQL中任意排序的性能如何?

PostgreSQL中任意排序的性能如何?
EN

Stack Overflow用户
提问于 2015-03-20 19:59:07
回答 1查看 362关注 0票数 0

在Postgres中,可以执行这样的命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM mytable
WHERE id in (8, 6, 7, 5, 10, 24)
ORDER BY id=8 DESC, id=6 DESC, id=7 DESC, id=5 DESC, id=10 DESC, id=24 DESC;

以任意顺序选择任意数据。

我曾想过,如果某个排序算法有O(log ),而我们天真地做了一个indexof排序,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data.sort(function(a, b) {
    return indexOf(a) < indexOf(b);
});

然后,我们每次排序操作可能需要O(2n),使我们的总算法时间为O( n )。

然后,我们可以创建一个简单的位置值索引,而不是每次都重新排序。假设这也有O(log )的最坏时间,那么对于我们的排序算法,我们得到O((log )(Log))或O((log )^2)。对于算法来说,这并不是很好的性能。

Postgres使用什么算法,什么性能?如果它比O((log )* the_sort_algorithms_performance)好,我们将在db之外实现排序。或者,如果算法是一种我们可以很容易移植到Java的算法,我们可能仍然不会在Postgres中进行排序。

EN

回答 1

Stack Overflow用户

发布于 2015-03-20 21:25:53

TLDR;你的宽泛的问题不涉及细节。排序算法是一个复杂的领域。

至于您的查询:如果您提供了一个值列表,这可能会更便宜,因为您无论如何都必须按某种顺序传递这些值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT t.*
FROM   unnest('{8, 6, 7, 5, 10, 24}'::int[]) id
JOIN   mytable t USING (id);

这是可行的,但不能保证。当然(在Postgres 9.4+中):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT *
FROM   unnest('{8, 6, 7, 5, 10, 24}'::int[]) WITH ORDINALITY x(id, rn)
JOIN   mytable t USING (id)
ORDER  BY x.rn;

详细信息:

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

https://stackoverflow.com/questions/29174882

复制
相关文章
【转】多维数据查询OLAP及MDX语言笔记整理
为了满足业务管理和决策的报表系统(包括传统报表、数据仓库、OLAP等)也被创建出来,企业主管通过报表了解企业的总体运行状态。 但是,随着企业间竞争的加剧和市场节奏的进一步加快,企业的日常管理需要对关键业务指标的更加实时的监控和反馈。比如:制造业需要更及时的仓库调度、金融业需要更实时的风险防范、电信业需要更及时的服务指标监控。于是,越来越多的企业提出实时企业的要求,传统的ERP等信息系统和报表系统无法满足这些需求。实时业务监控解决方案旨在更好支撑客户此类需求。 http://www.tuicool.com/articl... 当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
用户7002828
2020/02/26
2.5K0
【转】多维数据查询OLAP及MDX语言笔记整理
为了满足业务管理和决策的报表系统(包括传统报表、数据仓库、OLAP等)也被创建出来,企业主管通过报表了解企业的总体运行状态。 但是,随着企业间竞争的加剧和市场节奏的进一步加快,企业的日常管理需要对关键业务指标的更加实时的监控和反馈。比如:制造业需要更及时的仓库调度、金融业需要更实时的风险防范、电信业需要更及时的服务指标监控。于是,越来越多的企业提出实时企业的要求,传统的ERP等信息系统和报表系统无法满足这些需求。实时业务监控解决方案旨在更好支撑客户此类需求。 http://www.tuicool.com/articl... 当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
ZhangXianSheng
2019/06/02
3.7K0
matplotlib:如何选定颜色
此颜色选择方式是由正则匹配的 C[0-9] 来确定颜色。只要是支持这种颜色的地方都可以通过这种方式来设置,而且也可以作为 matplotlib.Axes.plot 的单字符颜色。
bugsuse
2020/04/21
1.1K0
matplotlib:如何选定颜色
一起来学习MDX语言,类似SQL一样的通用,查询OLAP数据库利器
最近在项目中再次接触到SAP的BW系统取数问题,需要将BW的数据取出来在PowerBI上重新建模进行数据分析和报表制作。
Excel催化剂
2022/03/16
1.6K1
一起来学习MDX语言,类似SQL一样的通用,查询OLAP数据库利器
再推送一个MDX好工具MDX Studio,并简单分享下Excel下使用MDX的场景
心血来潮一个周末都在研究MDX,昨天推文谈到的一些MDX资源中后,紧接着在笔记练习实操时,想起了过去接触过的这个MDX Studio工具,重新下载使用了,非常好用,特别是关键字智能提示和格式化MDX代码方面。在此推荐给大家。
Excel催化剂
2022/01/26
2.5K0
再推送一个MDX好工具MDX Studio,并简单分享下Excel下使用MDX的场景
Gatsby中怎么使用MDX?
MDX 是一种文档格式,可以在 Markdown 文档中无缝地插入 JSX 代码。
Learn-anything.cn
2021/12/02
1.4K0
2021-01-12:多维快查多维查询系统,你了解的解决方案都有哪些?
多维表达式 (MDX) 是用于在 MicrosoftAnalysis Services 中处理和检索多维数据的查询语言。MDX 基于 XML for Analysis (XMLA) 规范,并带有特定于 SQL ServerAnalysis Services 的扩展。MDX 使用由标识符、值、语句、函数和运算符组成的表达式,Analysis Services 可以通过计算表达式来检索某个对象(如集或成员)或标量值(如字符串或数字)。
福大大架构师每日一题
2021/01/12
1.7K0
msbuild 使用 ProduceOnlyReferenceAssembly 创建作为引用的仅公开成员程序集
本文告诉大家如何使用 msbuild 的 ProduceOnlyReferenceAssembly 功能,将某个程序集里面仅导出其中的公开成员定义,而不包含具体的实现的方法
林德熙
2021/12/24
7800
MDX 让 Markdown 步入组件时代
在 MDX 出现之前,将 JSX 与 Markdown 混合书写时,Markdown 的优势就不存在了。 通常采是用基于模板字符串的方式,因此就需要大量的转义和繁琐的语法。
狂奔滴小马
2022/03/30
1.6K0
MDX 让 Markdown 步入组件时代
MdxBuilder制作mdx文件-mdict词典
作者:matrix 被围观: 5,234 次 发布时间:2013-03-03 分类:零零星星 | 一条评论 »
HHTjim 部落格
2022/09/26
1.2K0
MdxBuilder制作mdx文件-mdict词典
编码技巧 --- 同步锁对象的选定
线程锁的原理,就是锁住一个资源,使得应用程序在此刻只有一个线程访问该资源。通俗地讲,就是让多线程变成单线程。在C#中,可以将被锁定的资源理解成 new 出来的普通CLR对象。
Niuery Diary
2023/10/22
1350
编码技巧 --- 同步锁对象的选定
DAX 2 - 第一章 什么是 DAX
本文来自社区伙伴对《DAX 权威指南(第二版)》的学习笔记,有问题可以留言或联系BI佐罗修改,感谢你的支持。
BI佐罗
2020/04/27
4.7K0
数据建模-维度建模-维度设计
在Kimball维度建模中,通常将度量称为“事实”,将环境描述为“维度”,维度是用于分析事实所需要的多样环境。维度和维度属性是维度的两个核心概念,如何构建维度的属性是维度设计中需要关注的。维度具有层次结构,维度中的一些描述属性以层次方式或一对多方式相互关联。比如商品维度,有卖家、类目、品牌等父层次。对于层次结构,是采用雪花模式进行规范化处理还是将维度的属性层次合并到单个维度中进行反规范化处理,需要进行取舍。
大数据学习与分享
2023/09/06
6580
数据建模-维度建模-维度设计
Ubuntu—截屏与截取选定区域
# 截取选定区域时,先按下组合键后,鼠标的形状就会变成十字架形状,这时候再截取想要截取的区域就可以了~
py3study
2020/01/17
6760
编码技巧 --- 同步锁对象的选定
线程锁的原理,就是锁住一个资源,使得应用程序在此刻只有一个线程访问该资源。通俗地讲,就是让多线程变成单线程。在C#中,可以将被锁定的资源理解成 new 出来的普通CLR对象。
郑子铭
2023/08/30
1290
编码技巧 --- 同步锁对象的选定
链表求和
Life only come out of the beautiful, did not wait out of the brilliant.
小Bob来啦
2020/12/15
1.1K0
链表求和
【题解】求和
定义一种特殊的三元组:(x,y,z),其中x,y,z都代表纸带上格子的编号,这里的三元组要求满足以下两个条件:
fishhh
2022/08/31
1.2K0
【题解】求和
阶乘求和
求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。
pigeon
2022/04/11
1.2K0
维度模型数据仓库(十一) —— 维度层次
(五)进阶技术         6. 维度层次         大多数维度都具有一个或多个层次。例如,日期维度就有一个四级层次:年、季度、月和日。这些级别用date_dim表里的列来表示。日期维度是一个单路径层次,因为除了年-季度-月-日这条路径外,它没有任何其它层次。本篇将讨论在维度的层次上进行分组和钻取查询。多路径层次在下一篇“多路径和参差不齐的层次”中讨论。         为了识别数据仓库里一个维度的层次,首先要理解维度中列的含义。然后就可以识别两个或多个列具有相同的主题。例如,日、月、季度和年具有相同的主题因为它们都是关于日历的。具有相同主题的列形成一个组。组中的一列必须包含至少一个组内的其它成员。例如,在前面提到的组中,月包含日。这些列的链条形成了一个层次。例如,日-月-季度-年这个链条是一个日期维度的层次。除了日期维度,产品和客户维度也有层次。 表(五)- 6-1显示了三个维度的层次。注意客户维度具有两个路径的层次。
用户1148526
2022/12/02
6900
维度模型数据仓库(十一) —— 维度层次
点击加载更多

相似问题

MDX:如何访问当前选定的维度成员?

32

iif维度成员(MDX)

10

使用MDX查询列出维度成员

44

MDX过滤维度成员与其他维度的结果

12

MDX计算成员按维度属性筛选

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文