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

这篇具有很好参考价值的文章主要介绍了Oracle 查询优化改写(第一章)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一章 单表查询

1.查询空值

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

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子句中引用取别名的列

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

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

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

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

 5.限制返回的行数

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

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

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

 

 7.模糊查询

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

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

参考文献:Oracle查询优化改写技巧与案例2.0  作  译  者:有教无类,落落文章来源地址https://www.toymoban.com/news/detail-490691.html

到了这里,关于Oracle 查询优化改写(第一章)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决Oracle SQL语句性能问题——SQL语句改写(视图、标量子查询及update)

    我们在前述文章中也已经提到,对于高版本的关系库,尤其是针对Oracle这样的关系库,绝大多数场景下,同一语义和结果的SQL语句的具体语法,不会成为SQL语句执行计划的影响因素,但在少数场景下,针对同一语义和结果的SQL语句的不同写法,数据库优化器最终会分别为其生

    2024年02月10日
    浏览(47)
  • 查询优化之单表查询

    查询 category_id 为1 且 comments 大于 1 的情况下,views 最多的 article_id 我们一般会使用以下语句查询 这个sql语句的type是all,并且Extra里面出现了Using filesort,这个必须优化 添加索引 我们再次进行上面语句的查询 我们可以看到type变成了range,但是extra里面却是Using filesort ,这个性能

    2024年02月01日
    浏览(32)
  • Oracle第一章

    事务性操作 增删改 非事物性操作 查 特点 一致性和原子性 确保数据的步骤安全 隔离性 多个用户对同一个数据进行事物操作 需要先来后到 begin开启事务(oracle默认开启) rollback 回滚数据 commit 数据提交 2-1  什么是 ORACLE ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分

    2024年04月23日
    浏览(27)
  • GreatSQL 优化技巧:将 MINUS 改写为标量子查询

    minus 指令运用在两个 SQL 语句上,取两个语句查询结果集的差集。它先找出第一个 SQL 所产生的结果,然后看这些结果有没有在第二个 SQL 的结果中,如果在,那这些数据就被去除,不会在最后的结果中出现,第二个 SQL 结果集比第一个SQL结果集多的数据也会被抛弃。 这两天的

    2024年04月08日
    浏览(38)
  • SQL查询优化---单表使用索引及常见索引失效优化

    系统中经常出现的sql语句如下: 优化后 建立索引前 索引后 如果系统经常出现的sql如下: 或者 那原来的idx_age_deptid_name 还能否正常使用? 如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过索引中的列。 如果系统经常出现的sql如下: 那么

    2024年02月08日
    浏览(62)
  • oracle分组查询取第一条

    在 Oracle 中,可以使用 row_number() 函数来实现分组取第一条记录的功能。例如,假设有一张表 mytable ,其中有两列 col1 和 col2 ,并且想要按照 col1 分组,并取出每组的第一条记录。你可以这样写查询语句: 上面的查询中,首先使用 row_number() 函数根据 col1 分组,并按照 col2 的值

    2024年02月17日
    浏览(45)
  • 9月5日上课内容 第一章 NoSQL之Redis配置与优化

    ●关系型数据库: 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。 SQL 语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。 主流的关系型数据库包括 Oracle、MySQL、

    2024年02月09日
    浏览(40)
  • (最优化理论与方法)第一章最优化简介-第二节:最优化典型实例之稀疏优化和低秩矩阵恢复

    考虑下面线性方程组的求解问题,其中 x ∈ R n , b ∈ R m xin R^{n},bin R^{m} x ∈ R n , b ∈ R m ,矩阵 A ∈ R m × n Ain R^{m×n} A ∈ R m × n ,且向量 b b b 的维数远小于向量 x x x 的维数,也即 m m m n n n A x = b Ax=b A x = b 在相关问题中,当我们建立这样的模型后,常常希望 解出向量

    2024年02月08日
    浏览(46)
  • oracle查询如何优化

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有nul

    2023年04月20日
    浏览(42)
  • oracle 大数据常见优化 &分页查询

    参考某微信社区博主,此文为温故知新;原参考博主账号与链接已丢失 1.limit 语句样式:select * from table limit m,n 适用场景:适用于数据量较少的情况(元组、百/千) 缺点:全表扫描,速度劣势,有的数据库结果集返回不稳定。limit限制是从结果集的M位置处取出N条输出,其余

    2024年02月05日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包