一次查询优化「建议收藏」

一次查询优化「建议收藏」背景:一个业务表:t_biz,两个数据源表:t_remind(提醒待办表),t_remind_record(提醒已办表,数据量非常大,已分区),其他关联表。每次执行任务会查业务表的增量数据和存量数据…

一次查询优化

    sql 版本1.0:

        最开始由于测试环境待办表和已办表也会有重复数据,是把代办表和已办表查询结果 union all 后,使用下面方式去重,数据量太大,效率很低。

        ROW_NUMBER() OVER(PARTITION BY REMIND_ID ORDER BY REMIND_ID ) RN

    sql 版本2.0:

        由于生产环境待办表和已办表数据不会重复,修改为把已办表查询结果去重后再与待办表查询结果 union all,效率提升很多。

    sql 版本3.0:

        由于业务引入时间晚于提醒数据,历史数据无需查询,添加时间条件限制,同时也是索引列,在之前基础上查询效率进一步提升。生产最后使用此版本。

        由于历史原因,都是先查询代办表和已办表然后 union all ,最开始由存储过程定时执行查出放到中间表;后来数据同步不及时,放弃中间表改用视图。这种方式使得业务表与提醒表关联的字段并不能触发索引的作用,由于提醒数据会一直增长,sql3.0会遇到瓶颈,于是有尝试了另一个版本。

    sql 版本4.0:

        业务表分别关联代办表和已办表(最外层去重),此处与sql2.0比较,查看执行计划已办表没什么区别,还是走分区;代办表索引起作用,效率提高很多;整体查询效率与sql3.0差不多,加上时间限制也没什么变化,可能由于数据量还不大导致的。虽然这个版本sql比较复杂,考虑后面数据量不断加大,认为这种方式加上时间限制限制条件会有更好的表现。

    思考:

    1.要学会查看 sql 执行计划;

    2.尽量使索引、分区起到应有的作用;

    3.慎用视图,不能因为简化 sql 影响 sql 性能;

 

sql优化文章: https://zhuanlan.zhihu.com/p/72071609

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8725.html

(0)
上一篇 2023-02-23
下一篇 2023-02-23

相关推荐

  • 关于使用python语言写的的信息「建议收藏」

    关于使用python语言写的的信息「建议收藏」Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

    2023-08-25
    146
  • Python Assert:优化代码调试与测试

    Python Assert:优化代码调试与测试Python Assert是Python中的一种断言语句,用于在代码中进行自动化测试。通过在代码中插入assert语句,可以对代码做出各种前置条件的检查,以确保代码的正确性。当assert语句的条件返回False时,程序将会中止并抛出异常,以提醒开发人员代码存在问题。

    2024-03-15
    76
  • python的most的简单介绍

    python的most的简单介绍1、打开Python开发工具IDLE,新建‘myexcept.py’文件,并写代码如下:

    2023-11-28
    122
  • 快速开发可视化数据分析应用的Python脚本

    快速开发可视化数据分析应用的Python脚本在当今的大数据时代,数据分析越来越重要。Python作为一种流行的编程语言,非常适合用于数据科学和分析。Python拥有强大的科学计算库、易于使用的接口和令人印象深刻的可视化工具,因此成为数据科学家和研究人员的首选工具。在今天的文章中,我们将探讨如何使用Python脚本快速开发可视化数据分析应用。

    2024-03-24
    77
  • 如何把sql语句结果输出到excel

    如何把sql语句结果输出到excel如果SQL语句的结果太大,通过plsql developer无法显示所有的结果,这个时候,我们可以通过一段代码来完成,下面是一个例子: 把 select last_name, salary, dep…

    2022-12-27
    139
  • Python基础之数据库:2、MySQL的下载与安装、基本使用、系统服务制作「终于解决」

    Python基础之数据库:2、MySQL的下载与安装、基本使用、系统服务制作「终于解决」一、MySQL简介 ​ MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 二、安装与下载 1、下载流程 1、访

    2023-06-16
    151
  • flink sql实时计算_flink 编程

    flink sql实时计算_flink 编程一、理想与现实 Apache Flink 是一个分布式流批一体化的开源平台。Flink 的核心是一个提供数据分发、通信以及自动容错的流计算引擎。Flink 在流计算之上构建批处理,并且原生的支持迭代计

    2023-01-31
    169
  • Python s_irusr:优秀的字符串处理工具

    Python s_irusr:优秀的字符串处理工具在Python中,字符串是非常重要的数据类型之一。在各种应用场景中,我们经常需要进行字符串的处理、拼接、转换、比较等操作。这时候,字符串处理工具就会成为我们必不可少的工具之一。Python s_irusr正是其中一个优秀的字符串处理工具。下面,我们将从多个方面对其进行详细阐述:

    2024-01-05
    120

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注