`
liulanghan110
  • 浏览: 1076637 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

合理使用排序

SQL 
阅读更多

排序操作一般都是在内存里进行的,对于数据库来说是一种 CPU 的消耗,曾在 PC 机做过测试,单核普通 CPU 1 秒钟可以完成 100 万条记录的全内存排序操作,所以说由于现在 CPU 的性能增强,对于普通的几十条或上百条记录排序对系统的影响也不会很大。但是当你的记录集增加到上万条以上时,你需要注意是否一定要这么做了,大记录集排序不仅增加了 CPU 开销,而且可能会由于内存不足发生硬盘排序的现象,当发生硬盘排序时性能会急剧下降,这种需求需要与 DBA 沟通再决定,取决于你的需求和数据,所以只有你自己最清楚,而不要被别人说排序很慢就吓倒。

以下列出了可能会发生排序操作的 SQL 语法:

Order by

功能 : 按照指定列排序。

Group by

功能:分组

原理:按照指定列排序后相同的分到一组。

Distinct

功能:去除重复的列

原理:将字段排序后前一行数据和后一行数据比较如果完全相同则去掉后一行,不完全相同则跳到下一行再开始

Exists Not Exists 子查询

功能:略

原理:先查找主查询的记录,然后排序,再与子查询的记录比较,选出符合条件的记录。

In Not In 子查询

功能:略

原理:先查找主查询的记录,然后排序,再与子查询的记录比较,选出符合条件的记录。

In Not In 子查询

功能:略

原理:先查找子查询的记录,然后排序,再与主查询的记录比较,选出符合条件的记录。

Union (并集)

功能:合并两个表的数据并去掉重复数据

原理:将两个表排序后合并,去掉重复记录。

注: Union All 也是一种并集操作,但是不会发生排序,如果你确认两个数据集不需要执行去除重复数据操作,那请使用 Union All 代替 Union

 

merge into

功能:利用一个表更新另一个表的记录。根据条件,若匹配更新数据,若不匹配,则插入数据

原理:将需要更新的表和数据表按匹配条件的列排序,若相等,更新数据,若不相等插入数据

 

上面是会产生排序的一些操作,没有必要,我们要尽量避免排序。如果非要排序,那么排序尽量在最后进行。

   

 

分享到:
评论

相关推荐

    经典排序算法,有选择排序,冒泡排序,交换排序,谢尔排序,插入排序基数排序

    根据给定的文件信息,我们将深入探讨几种经典的排序算法,包括选择排序、冒泡排序、交换排序、希尔排序、插入排序以及基数排序。...理解这些排序算法的原理和优劣,有助于我们在面对具体问题时做出合理的选择。

    快速排序、堆排序、归并排序、希尔排序实现

    同时,合理使用STL容器和算法库可以简化代码并提升效率。 在Sort.Try这个项目中,开发者可能包含了这四种排序算法的C++实现代码,通过学习和分析这些代码,可以加深对排序算法的理解,并有助于实际开发中选择合适的...

    数据库访问优化之如何减少数据库服务器CPU运算.pdf

    本文主要介绍了如何减少数据库服务器CPU运算的方法,包括使用绑定变量、合理使用排序、减少比较操作等。文章首先介绍了使用绑定变量的优点,包括防止SQL注入、提高SQL可读性和提高SQL解析性能。然后,文章通过一个...

    Java 开发手册 阿里巴巴公开版本

    2. 算法优化:合理使用排序算法(如快速排序、归并排序)、查找算法(如二分查找),避免暴力遍历。 五、系统设计 1. 分层架构:遵循MVC(Model-View-Controller)、SOA(Service-Oriented Architecture)等设计...

    delphi多线程 冒泡排序,选择排序,快速排序

    1. **冒泡排序** 是一种简单但效率较低的排序算法,适合在数据量小或部分有序的情况下使用。它的基本思想是通过不断交换相邻的逆序元素,使较大的元素逐渐“浮”到序列的末尾。在多线程环境下,可以将数组分为几个...

    综合排序系统课程设计(C++实现,有内部排序和外部排序)

    1.内部排序:使用8种内部排序算法(冒泡排序、插入排序、选择排序、希尔排序、快速排序、归并排序、基数排序、堆排序),对出版社信息按照指定关键字进行排序,分析其时空复杂度(在实验报告的总结与思考中会有相应...

    Jquery表格排序插件,支持快速排序

    而快速排序则是一种更为高效的排序算法,它使用分治法策略来把一个序列分为较小和较大的两个子序列,然后递归地排序两个子序列。具体实现中,选取一个元素作为基准,将小于基准的所有元素都移到基准的左边,大于基准...

    Excel中嵌套分类汇总.pdf

    在Excel中,嵌套分类汇总是一项强大的数据分析工具,它允许...通过合理使用排序和汇总功能,用户可以自定义多级分类,以满足各种复杂的业务需求。正确掌握这项技能,将极大地提升Excel用户在处理大量数据时的工作效能。

    快速排序和直接插入排序的组合

    快速排序和直接插入排序是两种常见的排序算法,它们各自具有不同的特性和应用场景。在实际编程中,有时会根据数据特点和...在编程实现时,要充分理解两种排序算法的原理,并合理设计组合策略,以达到最优的排序效果。

    iOS桶排序算法

    每个桶再分别排序,可以使用不同的排序算法,甚至可以递归地使用桶排序。最后,每个桶中的元素再按照顺序依次取出,就形成了全局有序的序列。 算法步骤如下: 1. 初始化:确定一个合理的桶的数量,并分配空桶。 2....

    用C实现快速排序、希尔排序、归并排序等排序算法

    对于希尔排序,合理设置增量序列;而对于归并排序,理解如何有效地合并已排序的子序列至关重要。 在提供的压缩包文件"复件 sort"中,很可能包含了实现这些排序算法的C源代码。通过阅读和运行这些代码,你可以更直观...

    多线程排序---希尔排序、快速排序、堆排序

    此外,合理地划分任务和负载均衡也是优化多线程排序性能的关键。 总结来说,这个主题提供了多线程实现希尔排序、快速排序和堆排序的示例,有助于理解如何在并发环境下提升排序效率,同时也提醒我们关注线程安全和...

    使用线程控制的动态展示排序算法

    总结,"使用线程控制的动态展示排序算法"是一项将并发编程技术与算法可视化相结合的实践,旨在提高排序效率,同时提供一个学习和分析排序算法的交互式环境。通过合理利用线程控制,我们可以在保证性能的同时,使排序...

    java 各种排序排序.pdf

    从给定的文件信息中,我们可以提炼出关于Java中几种主要排序算法的详细知识点,包括插入排序、希尔排序、选择排序、堆排序以及交换排序。下面将深入探讨这些排序算法的特点、工作原理以及它们的稳定性与时间复杂度。...

    五种排序算法

    在选择合适的排序算法时,需要根据数据量大小、数据特性以及是否对时间或空间复杂度有所要求等因素,作出合理的选择。例如,桶排序适合数据量较小且分布均匀的场景;快速排序适合大数据量且对效率要求较高的情况;...

    冒泡排序与合并排序的时间复杂度比较

    在合并排序中合理地管理指针和内存,确保合并过程的效率。 综上所述,冒泡排序和合并排序在时间复杂度上有显著区别,冒泡排序适用于小规模或部分有序的数据,而合并排序更适合处理大规模且无特定顺序的数据。在实际...

    C经典算法之快速排序法(三)

    ### C经典算法之快速排序法(三) 在探讨快速排序法的过程中,我们已经了解到轴的选择...对于计算机科学领域的学习者而言,理解和掌握这些细节是非常重要的,这有助于他们在开发实际应用时做出更加合理的设计决策。

    一种很好的排序方式希尔排序

    希尔排序,又称希尔斯排序,是由美国计算机科学家Donald Shell于1959年提出的一种基于插入排序的快速排序算法。这种排序方法通过设置一个增量序列,...在实际编程中,理解并合理使用希尔排序有助于提升代码的运行效率。

    希尔排序法(希尔插入排序,希尔交换排序)

    ### 希尔排序法(希尔插入排序,希尔交换排序) #### 一、希尔排序法简介 ...总之,希尔排序作为一种经典的排序算法,虽然不如快速排序和归并排序那样广泛使用,但在特定场景下仍具有不可替代的作用。

    VB依指定规则排序坐标

    编程时还要考虑错误处理,比如坐标是否有效,排序规则是否合理等。 通过这种方式,VB可以有效地处理各种复杂的数据排序问题,包括对坐标进行自定义规则的排序。这不仅锻炼了我们的编程技巧,也提高了程序的灵活性...

Global site tag (gtag.js) - Google Analytics