`

sql语句中or用法的优化

阅读更多
在SQL语句中用了OR之后, 其实很不容易控制, 第一次是想让一个带两个OR的用UNION去执行, 结果用了USE_CONCAT后变成了4个UNION了, 居然没有办法让他按我想象的第一个OR进行UNION. 第二次是在索引上, OR条件导致了不能在索引上进行条件过滤. 现在遇到了第三次, 是同事发现的, 怕自已记不住, 就没有征得他的同意, 在这儿共享出来了.
    有下面两个表, TYPE_ID列上值的重复性很高.

CREATE TABLE T_SMALL (TYPE_ID, ID, ...);
CREATE TABLE T_MIDDLE (TYPE_ID, ID1, ID2, ...);
    运行下面的SQL时, 总是很慢, 我们已经指定用HASH JOIN, 并也指定了T_SMALL是驱动表, 百思不得其解.

SELECT .....
  FROM T_SMALL S, T_MIDDLE M
  WHERE S.TYPE_ID = M.TYPE_ID
    AND (S.ID = M.ID1 OR S.ID = M.ID2)
    第一百零一思时, 发现了原因所在, 因为OR的问题, Oracle在做HASH JOIN时只依据了TYPE_ID这个效率不高的列, 这时的PLAN中肯定出现了FILTER这样的步骤. 后来将这个语句手工改成UNION方式, 就从2个小时变成了15分钟.

SELECT .....
  FROM T_SMALL S, T_MIDDLE M
  WHERE S.TYPE_ID = M.TYPE_ID
    AND S.ID = M.ID1
UNION ALL
SELECT .....
  FROM T_SMALL S, T_MIDDLE M
  WHERE S.TYPE_ID = M.TYPE_ID
    AND S.ID = M.ID2 AND M.ID1 <> M.ID2
    SQL语句的调优, 其实很需要功夫, 也是一门很深的学问, 如此简单的SQL, 也有很深刻的知识.

分享到:
评论

相关推荐

    Effective MySQL之SQL语句最优化.pdf

    10. SQL语句优化的技术手段:技术手段包括但不限于使用子查询优化、使用JOIN代替子查询、避免SELECT *、使用更有效的查询方法(如IN代替OR)、利用数据库提供的存储过程和函数减少网络往返次数等。 11. 经验与实践...

    最新整理的常用sql语句及优化大全

    本资源中详细讲解了这些常用SQL语句的使用方法和优化策略,通过学习,你可以更好地掌握SQL操作,提升数据库管理效率。无论你是初学者还是有经验的开发者,都能从中受益。记得实践是检验真理的唯一标准,理论结合实际...

    sql语句的优化

    在数据库设计与管理中,SQL语句的优化是一项至关重要的工作。合理的SQL优化不仅能显著提升数据处理速度,还能有效降低服务器资源消耗,从而提高整个系统的响应时间和用户体验。本文将详细介绍如何通过优化SQL语句来...

    SQL控制语句集锦SQL语句集锦

    在本篇文章中,我们将对 SQL 控制语句集锦进行详细的介绍,包括 DISTINCT、WHERE、IN 和 BETWEEN 等控制语句的使用方法和实例。 DISTINCT 控制语句 DISTINCT 控制语句是 SQL 中最常用的控制语句之一,它允许我们从...

    SQL查询思路优化与语句优化.pdf

    本文还讨论了SQL查询思路优化的方法,包括使用EXISTS和IN代替子查询、使用索引、避免使用SELECT \*、使用合适的连接方式和避免使用OR条件等。这些方法可以提高查询速度,简化管理和提高数据库性能。 关键词:SQL...

    sql中as的用法和一些经典的sql语句.doc

    "SQL中的AS用法和经典SQL语句整理" SQL语言中,AS关键字用于为表或列指定别名,以便于查询和简化语句。在本文中,我们将总结一些常用的SQL语句,并解释AS用法的细节。 一、DELETE语句 DELETE语句用于删除表中的...

    常用 SQL 语句大全+50个常用sql语句总结

    此外,文件中还展示了局部变量的声明和使用,以及全局变量的使用方法;通过 `IF`、`ELSE IF`、`ELSE` 实现条件判断;通过 `CASE` 语句进行复杂的条件赋值;使用 `WHILE` 循环进行重复执行操作;以及如何使用 `WAIT...

    SQL语句自动生成器

    这对于初学者来说是一个很好的学习工具,他们可以通过查看生成的代码来理解SQL语句的结构和用法。同时,对于经验丰富的开发人员,这个工具也能节省他们在日常工作中编写简单或重复SQL语句的时间。 在使用SQL语句...

    SQL语句大全 SQL的基本命令

    本篇文章提供了一个全面、详细的SQL语句大全,涵盖了数据库管理系统中的基本命令、数据操作、数据定义、数据控制、事务控制、程序化SQL等方面的知识点,旨在帮助读者快速掌握SQL语句的使用技巧和方法。

    一般SQL语句优化整理

    ### 一般SQL语句优化整理 #### 概述 在数据库操作中,SQL查询语句是数据检索的核心,其性能直接影响到应用系统的响应时间和资源消耗。对于一般的SQL语句优化,不仅能够提升查询效率,还能改善用户体验。本文将对...

    ORACLE数据库SQL语句编写优化总结

    总结以上内容,ORACLE数据库SQL语句的编写优化涉及多方面知识,包括优化器的合理选择、高效的表访问方法、共享SQL语句的使用、索引的正确配置和应用、SQL内部操作的处理以及低效SQL语句的识别与优化等。在实际操作中...

    SQL语句中设置多个字符串

    本实例将深入探讨如何在SQL语句中设置多个字符串条件,这对于初学者掌握数据库操作至关重要。 首先,让我们了解SQL的基本结构。SQL主要用于与关系型数据库进行交互,其基本查询语句包括SELECT,FROM,WHERE等部分。...

    SQL语句性能分析之explain

    通过在SQL语句前加上`EXPLAIN`关键字,可以详细展示MySQL如何处理查询语句以及如何使用索引来处理这些查询。这有助于我们选择更高效的索引策略,并编写出性能更佳的查询语句。 #### EXPLAIN详解 **基本用法** 在...

    实用总结SQL语句大全实用总结SQL语句大全.rar

    总之,“实用总结SQL语句大全”将引导你掌握SQL的基本用法,理解其核心概念,并能灵活运用到实际数据库操作中。无论是初学者还是有经验的数据库管理员,这个资源都能提供宝贵的参考。通过深入学习和实践,你可以提升...

    SQL语句练习题及答案

    ### SQL语句强化练习知识点详解 #### 一、简单查询 **知识点1:查询所有记录** - **描述**: 使用 `SELECT * FROM 表名` 可以查询表中的所有记录。 - **示例**: 查询所有学生的信息。 - **SQL语句**: `SELECT * ...

    常用的sql语句的优化

    合理使用索引可以提高查询效率,但需要注意的是,不是所有索引对查询都有效,SQL 是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL 查询可能不会去利用索引。 避免更新 Clustered 索引数据列 避免...

    SQL语句最优化

    同时,还涉及了使用AND、OR和IN条件来组合查询文档,以及find()方法中投影(projection)的使用。 6. MongoDB的聚合操作:聚合是MongoDB中一个强大的特性,用于处理集合中的数据,执行一系列的转换和分析工作。文件...

    经典sql语句笔记(sql 关键字)

    不同的SQL语句可能涉及不同的参数,如`LIMIT`语句中的偏移量和限制数量,`INSERT`语句中的列名和值列表,`UPDATE`语句中的设置的新值等。具体参数取值需根据具体查询和数据库系统而定。 总的来说,SQL是一门强大的...

    商务智能SQL语句优化技术教材.pptx

    4. **SQL语句本身的问题**:优化SQL语句的编写,如避免子查询,使用JOIN代替子查询,适当使用临时表和表变量,以及避免在WHERE子句中使用NOT和OR操作。 数据库在接收到SQL语句后,会进行解析,然后由优化器根据不同...

    sql语句学习入门

    SQL语句中使用了多种操作符来构建条件表达式。其中,AND和OR用于在WHERE子句中组合多个条件;LIKE用于在WHERE子句中搜索列中符合特定模式的记录;BETWEEN用于在WHERE子句中找出两个值之间的范围的记录;IN用于在...

Global site tag (gtag.js) - Google Analytics