postgresql的排序。
1.是根据排序数据量的大小来判断,如果数据量少到能够整体放到内存的话,就直接快速排序,
2.数据量较大内存放不下,但是所需要返回的元组内存可以装下或者TOP N的性能比快排好的话,TOP N类型的算法走起(这里是堆排序),;
3.数据量很大,并且返回的元组内存也放不下的话,外部归并排序走起。
 
快排和速排都是非稳定算法,这也是小数据量和top的时候如果有相同的值,两次查询的结果可能顺序不一样。如果数据量大,使用了外部归并排序那么每次的结果都将一样。
 
排序算法总结
 
堆排序的思想是,先构造一个大顶堆,堆排序是一种选择排序,他的最坏最好平均时间复杂度均为O(nlogn),是一种非稳定排序。循环删除堆顶元素(堆顶元素最大。),移到集合尾部,调节堆产生新的堆顶。
 
堆排序和快速排序都是O(nlogn),都是不稳定排序。快速排序的最坏时间复杂度为O(n^2),而堆排序最坏时间复杂度稳定在O(nlogn)
 
堆排序可以看成完全二叉树,大顶堆是最大的元素,删除该元素,将该元素移到集合尾部,然后产生新的堆顶,不断的重复这个过程,最终完成排序。
快速排序使用分治法,将数据分成前后两块,找一个基准数,先从后面开始向前扫描找到小于基准数,然后从前向后扫描找一个大于基准数的数,然后将两者交换位置,不断的重复这个过程,最终完成排序。

postgresql-排序的更多相关文章

  1. postgresql排序分页时数据重复问题

    当同时排序又分页时,如果排序的字段X不是唯一字段,当多个记录的X字段有同一个值时顺序是随机的. 这个有可能造成分页时数据重复的问题.某一页又把上一页的数据查出来了,其实数据库只有一条记录. 解决办法: ...

  2. Delete,Update与LEFT Join

    UPDATE:UPDATE A SET ApproverID=NULL FROM [SH_MaterialApplyBuyBill] A LEFT JOIN [SH_MaterialApplyBuyB ...

  3. Java 学习文章汇总

    目前JAVA可以说是产业界和学术界最热门的语言,许多人都很急切想把JAVA学好. 但学习是需要步骤的,除非像电影中演的那样,能够把需要的专业技巧下载到脑海:主角只花了几秒下载资料,就马上具备飞行员的技 ...

  4. CLUSTER - 根据一个索引对某个表集簇

    SYNOPSIS CLUSTER indexname ON tablename CLUSTER tablename CLUSTER DESCRIPTION 描述 CLUSTER 指示PostgreSQ ...

  5. PostgreSQL 数据库NULL值的默认排序行为与查询、索引定义规范 - nulls first\last, asc\desc

    背景 在数据库中NULL值是指UNKNOWN的值,不存储任何值,在排序时,它排在有值的行前面还是后面通过语法来指定. 例如 -- 表示null排在有值行的前面 select * from tbl or ...

  6. postgreSQL数据库limit分页、排序

    postgreSQL数据库limit分页.排序 语法: select * from persons limit  A  offset  B; 解释: A就是你需要多少行: B就是查询的起点位置. 示例 ...

  7. PostgreSQL 行排序详解

    在查询生成输出表之后,也就是在处理完选择列表之后,你还可以对输出表进行排序. 如果没有排序,那么行将以不可预测的顺序返回(实际顺序将取决于扫描和连接规划类型和在磁盘上的顺序, 但是肯定不能依赖这些东西 ...

  8. PostgreSQL 13支持增量排序(Incremental Sorting)

    PostgreSQL 13支持增量排序(Incremental Sorting) PostgreSQL 13一个重要的功能是支持增量排序,使用order by 时可以加速排序,SQL如下 select ...

  9. PostgreSQL下,对汉字按拼音排序

    参考学习此文: http://blog.163.com/digoal@126/blog/static/163877040201173003547236/ 建库 postgres=# \l List o ...

  10. ORACLE Postgresql中文排序

    当我们order排序不能够实现我们想要的内容时候,尝试一下NLSSORT这个函数吧 他不仅仅按照姓氏排序,名也会排序: nls_param用于指定语言特征,格式为nls_sort      = sor ...

随机推荐

  1. IDEA 工具从Json自动生成JavaBean

    1.先安装GsonFormat插件:File-->Setting-->Plugins-->GsonFormat-->OK 2.new 一个新的Class空文件,然后 Alt+I ...

  2. jeesite 下载ckfinder上传的文件

    在需要下载的位置,将以下代码复制到页面最下方,就可以实现文件下载了 <script> $(document).ready(function() { var fileName = $(&qu ...

  3. mysql_day01

    1.MySQL概述 1.什么是数据库 数据库是一个存储数据的仓库 2.都有哪些公司在用数据库 金融机构.游戏网站.购物网站.论坛网站 ... ... 3.提供数据库服务的软件 1.软件分类 MySQL ...

  4. mongodb-MYSQL

    #encoding:utf8 import pymongoimport MySQLdbimport randomdef GetMongoData(): MyQuery = Mongo_Tab.find ...

  5. 【笔记】计算机原理,网络,Linux操作系统

    一,计算机原理 1,化繁为简的思想,产生二进制,产生把所有计算归结为加法运算 二,网络 1,分层思想,产生ISO七层协议,商用了TCP/IP的五层协议 三,Linux操作系统 1,分层思想,硬件-&g ...

  6. truecrype加密卷的使用

    truecrype7.1 文件加密 隐藏加密 密钥加密码双重保护

  7. spring整合kafka(配置文件方式 消费者)

    Kafka官方文档有   https://docs.spring.io/spring-kafka/reference/htmlsingle/ 这里是配置文件实现的方式 先引入依赖 <depend ...

  8. 基于ASP.NET高职学生工作管理系统--文献随笔(八)

    一.基本信息 标题:基于ASP.NET高职学生工作管理系统 时间:2015 出版源:电子科技大学 关键词:高职; 学生管理; ASP.NET; 系统; 二.研究背景 问题定义:随着社会的发展,我国经济 ...

  9. zeromq学习记录(三)使用ZMQ_PULL ZMQ_PUSH

    /************************************************************** 技术博客 http://www.cnblogs.com/itdef/   ...

  10. Eclipse中代码自动提示功能设置

    Eclipse中代码自动提示功能设置 1 打开eclipse→Windows→Preferences→Java→Editor→Content Assist: 修改Auto Activation tri ...