Oracle 查询优化改写(第一章)

news2025/2/9 7:46:46

第一章 单表查询

1.查询空值

2.将空值转换为实际值 

不采用nvl()函数,而使用COALESCE函数语法为COALESCE(表达式1,表达式2,...,表达式n),n>=2,此表达式的功能为返回第一个不为空的表达式,如果都为空则返回空值。
注意:所有表达式必须为同一类型或者能转换成同一类型。

CREATE OR REPLACE VIEW v AS
SELECT NULL AS C1, NULL AS C2, 1 AS C3, NULL AS C4, 2 AS C5, NULL AS C6 FROM tmp
UNION ALL
SELECT NULL AS C1, NULL AS C2, NULL AS C3, 8 AS C4, NULL AS C5, 5 AS C6 FROM tmp;
 
 
SQL> select * from v;
 
C1     C2        C3           C4      C5         C6
- - ---------- ---------- ---------- ----------
                 1            2
                 8            5
 --COALESCE使用
SQL> SELECT COALESCE(C1, C2, C3, C4, C5, C6) AS c FROM V;
 
     C
----------
     1
     8

 --用nvl函数
SELECT nvl(nvl(nvl(nvl(nvl(c1, c2), c3), c4), c5), c6) AS c FROM v;

总结:
NVL:如果第一个值为NULL取默认值,默认值是自己赋值上去的是个常数。支持两个参数。其本质是个函数。
coalesce:如果第一个参数为空就取第二个参数的值,第二个参数可以为常数也可以为表达式(字段,语句等)。以此类推,支持多个参数。更常用,其本质是个语句,更像个if语句,效率更高,建议使用。


3.在where子句中引用取别名的列

 4.在select语句中使用条件逻辑

有时为了更加清楚的地区分返回的信息,需要做如下处理:

 

 5.限制返回的行数

6.从表中随机返回N条记录

先生成随机排序,再取出数据。

 

 7.模糊查询

 

参考文献:Oracle查询优化改写技巧与案例2.0  作  译  者:有教无类,落落

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/640503.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日算法总结——回溯算法、 LeetCode 131. 分割回文串

LeetCode 131. 分割回文串 131. 分割回文串 - 力扣(LeetCode) 什么是回溯算法? 回溯算法真的是解决排列问题的一大利器,其实很多时候自己不经意间就写出了回溯算法,但是一直没有一个系统的认识,今天做一…

B树:数据结构中的平衡之道

目录 引言:一、定义:二、特点:三、应用场景:总结: 引言: 在计算机科学领域中,数据结构是构建和组织数据的重要工具。其中,B树(B-tree)作为一种自平衡的搜索树…

用RDMA重新思考有状态流处理

摘要 远程直接内存访问 (RDMA) 硬件弥合了网络和主要内存速度之间的差距,从而验证了网络通常是分布式数据处理系统中的瓶颈的常见假设。然而,高速网络并没有提供“即插即用”的性能(例如,使用 IP-overInfiniBand)&…

第二章 数据处理篇:transforms

教程参考: https://pytorch.org/tutorials/ https://github.com/TingsongYu/PyTorch_Tutorial https://github.com/yunjey/pytorch-tutorial 详细的transform的使用样例可以参考:ILLUSTRATION OF TRANSFORMS 文章目录 为什么要使用transformstransforms方…

RK3588平台开发系列讲解(以太网篇)PHY驱动

文章目录 一、PHY驱动初始化二、PHY 配置初始化三、PHY 的扫描四、PHY 的STATUS状态读取五、PHY的RESET 复位六、PHY 的注册phy_device_register七、PHY 的状态变化沉淀、分享、成长,让自己和他人都能有所收获!😄 一、PHY驱动初始化 完成了mdio总线的注册,以及对不一样厂家…

chatgpt赋能python:Python怎么截图

Python怎么截图 介绍 在日常的工作和学习中,截图是一项非常常见的操作。随着Python在各个领域的不断普及和应用,使用Python进行截图也成为了一个热门话题。Python作为一种高级编程语言,具备丰富的第三方库和模块,可以实现复杂的…

chatgpt赋能python:Python的GUI界面开发

Python的GUI界面开发 Python是目前非常流行的编程语言之一,其优雅的语法和强大的库使其在各个领域得到广泛应用。在GUI界面开发方面,Python也表现出了巨大的潜力。本文将介绍Python的GUI开发框架以及相关的工具和技术。 介绍 Python有多个GUI框架可供…

chatgpt赋能python:Python快速打括号小技巧

Python快速打括号小技巧 作为Python程序员,打括号无法避免。但是有没有快速打括号的方法呢?本文将分享一些小技巧,让你在编码中更加高效。 常规打括号 首先,我们来看看常规的打括号方法。在Python中,我们需要用括号…

Nacos架构与原理 - 健康检查机制

文章目录 注册中心的健康检查机制Nacos 健康检查机制临时实例健康检查机制永久实例健康检查机制集群模式下的健康检查机制 注册中心的健康检查机制 想象发生地质灾害,被掩埋在废墟下,搜救队需定位才能施救。两种方法: 大喊求救,告知位置与健康状况,让搜救队知晓搜救队使用专业…

机器学习之线性回归模型

1 线性回归模型介绍 线性回归模型是机器学习中非常基础且经典的模型,是利用线性拟合的方式探寻数据背后的规律,特征变量的个数可将线性回归模型分为一元线性回归和多元线性回归。 (1)一元线性回归 线性模型的原型为一元一次方程&…

多线程/WinAPI线程退出方式比较分析

文章目录 概述ExitThreadTerminateThread进程退出逼迫线程退出?线程入口函数返回验证无法执行C对象析构不同方案的比较参考或关联 概述 关于如何终止 Windows 线程,在 MSDN Terminating a Thread 一文中列举的很详细: A thread executes until one of …

python数据赋值后,修改新数据,原数据如何保证不被修改?

目录 1.deepcopy 2.实战演练 3.python中的变量实质 好文推荐:传送锚点 1.deepcopy python中对象,赋值后是同一地址,如果是可变对象,对其中一个修改会影响到另一个,如果要生成完全新的对象,应使用&#…

使用Gogs搭建自己的github服务器

文章目录 下载Gogs配置和启动让gogs保持运行 使用参考资料 Gogs官方网址:https://gogs.io/ 下载Gogs 在官网首页可以找到二进制运行,点击进去 让咱们去 github 咱们就去 github 看看好了。https://github.com/gogs/gogs/releases 找到自己需要的版本。 …

【OpenMMLab AI实战营第二期】语义分割与MMSegmentation

MMSegmentation 开源代码仓:https://github.com/open-mmlab/mmsegmentation 算法丰富:600预训练模型、40篇算法复现 模块化设计:配置简便、容易拓展 统一超参:大量消融实验、支持公平对比 使用方便:训练工具、调试…

Python处理办公自动化的10大场景

在编程世界里,Python已经是名副其实的网红了。Python最大优势在于容易学,门槛比Java、C低非常多,给非程序员群体提供了用代码干活的可能性。当然Python能成为大众编程工具,不紧是因为易学,还因为Python有成千上万的工具…

2. CompletableFuture

2.1 Future接口理论知识复习 Future接口(FutureTask实现类)定义了操作异步任务执行一些方法,如获取异步任务的执行结果、取消异步任务的执行、判断任务是否被取消、判断任务执行是否完毕等。 举例:比如主线程让一个子线程去执行任…

python中的map函数

1. map()函数的简介以及语法: 1.1 map是python内置函数,会根据提供的函数对指定的序列做映射。 1.2 map()函数的格式是: map(function,iterable,...) 第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列 1.3 map的返…

linux基本功之高效学习Linux命令行工具的技巧:Pandoc实战

前言 大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第65篇文章。 专栏地址:[linux基本功-基础命令专栏] , 此专栏是沐风晓月对Linux常用命令的汇总,希望能够加深自己的印象&am…

F407之位带操作

位带操作的应用场景,通常在于对IO口进行输入输出读取和控制。 这就和51单片机中直接的端口赋值是一样的。 比如 P0.0 0; P0.0 1; 直接就是对端口P0.0输出0和1。 如何实现呢? 什么是位带操作 位带操作简单的说,就是把每个比特膨胀为一个32位…

全面了解AES加密:入门指南

文章目录 I. 介绍A. 什么是加密B. 为什么要加密1. 保护数据的机密性2. 防止数据被篡改3. 防止数据被窃取4. 保护数据的可信度 C. AES加密的概述 II. 对称加密与非对称加密A. 对称加密的定义和特点1. 简单快速2. 安全性较低3. 适合大量数据加密4. 密钥管理困难5. 用途广泛 B. 非…