`
hideto
  • 浏览: 2682839 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL性能调优:1.2 特别语法调优

阅读更多
from http://www.beyondrails.com/blogs/43

1,一般数据库按从左到右方式解析表达式(Oracle是从右到左),对AND连接的表达式优化顺序,将更小可能发生的表达式放在前面
优化前:
... WHERE column1 = 'A' AND column2 = 'B'

优化后:
... WHERE column2 = 'B' AND column1 = 'A'
(assuming column2 = 'B' is less likely)


2,对OR连接的表达式优化顺序,将更大可能发生的表达式放在前面
优化前:
... WHERE column2 = 'B' OR column1 = 'A'

优化后:
... WHERE column1 = 'A' OR column2 = 'B'
assuming column1 = 'A' is most likely


3,对一系列OR连接的表达式,将相同的column放在一起
优化前:
... WHERE column1 = 1
       OR column2 = 3
       OR column1 = 2

优化后:
... WHERE column1 = 1
       OR column1 = 2
       OR column2 = 3


4,反向使用Distributive Law
优化前:
SELECT * FROM Table1
  WHERE (column1 = 1 AND column2 = 'A')
     OR (column1 = 1 AND column2 = 'B')

优化后:
SELECT * FROM Table1
  WHERE column1 = 1
    AND (column2 = 'A' OR column2 = 'B')


5,将NOT表达式用更易理解的方式替换
优化前:
... WHERE NOT (column1 > 5)

优化后:
... WHERE column1 <= 5


6,将不等号用大于和小于替换
优化前:
... WHERE NOT (bloodtype = 'O')

优化后:
... WHERE bloodtype < 'O'
       OR bloodtype > 'O'


7,将一系列OR连接的表达式用IN替换
优化前:
... WHERE column1 = 5
       OR column1 = 6

优化后:
... WHERE column1 IN (5, 6)


8,当IN后面是一个很密集的整数集时,查找"what is out"比查找"what is in"更好
优化前:
... WHERE column1 IN (1, 3, 4, 5)

优化后:
... WHERE column1 BETWEEN 1 AND 5
      AND column1 <> 2


9,不要将LIKE条件替换为>=,<等等,除非LIKE模式是一个参数如LIKE ?
优化前:
... WHERE column1 LIKE ?

优化后:
... WHERE column1 > SUBSTRING(? FROM 1 FOR 1)
      AND column1 LIKE ?


10,如果LIKE ?参数不带wildcard,并且前后空格等并不关注的话,则用等号来替换LIKE
优化前:
... WHERE column1 LIKE 'ABC'

优化后:
... WHERE column1 = 'ABC'


11,LIKE比多个SUBSTRING效率要高,所以不要替换

12,将UNION转换为OR
优化前:
SELECT * FROM Table1
  WHERE column1 = 5
UNION
SELECT * FROM Table1
  WHERE column2 = 5

优化后:
SELECT DISTINCT * FROM Table1
  WHERE column1 = 5
     OR column2 = 5


13,用CASE表达式来替换多个效率较低的查询条件的引用
优化前:
... WHERE slow_function(column1) = 3
       OR slow_function(column1) = 5

优化后:
... WHERE 1 =
       CASE slow_function(column1)
          WHEN 3 THEN 1
          WHEN 5 THEN 1
       END


14,在SELECT语句的SELECT关键字和FROM关键字之间的东西称为select list。将CASE表达式作为select list的最后的过滤条件。
分享到:
评论
1 楼 bingbing110 2011-08-28  
不错 学习了。。。

相关推荐

    MySQL性能调优与架构设计.

    2. **SQL解析**:MySQL服务器接收到SQL命令后,首先对其进行解析,确定语法是否正确,并生成抽象语法树(AST)。 3. **优化器处理**:根据AST生成初步的执行计划,然后通过优化器进行优化,生成最终的执行计划。 4. ...

    MySQL管理之道 性能调优、高可用与监控.part2.rar

    《mysql管理之道:性能调优、高可用与监控》由资深mysql专家撰写,以最新的mysql版本为基础,以构建高性能mysql服务器为核心,从故障诊断、表设计、sql优化、性能参数调优、mydumper逻辑、xtrabackup热备份与恢复、...

    收获不止SQL优化

    1.2 整体性能工具的要点 4 1.2.1 五大性能报告的获取 5 1.2.2 五大报告关注的要点 10 1.3 案例的分享与交流 18 1.3.1 和并行等待有关的案例 18 1.3.2 和热块竞争有关的案例 19 1.3.3 和日志等待有关的案例 20...

    sql性能的调整-总结.pdf

    - **应用开发人员**: 负责传递实现策略,帮助在SQL调优过程中快速定位问题语句。 - **数据库管理员(DBA)**: 监控系统活动,及时发现并解决异常性能问题。 - **硬件/软件管理人员**: 提供系统配置详情,支持系统设计...

    sql性能的调整

    - **SQL调优工具**:使用Oracle提供的调优工具,如SQL Tuning Advisor。 ### 结论 通过对SQL性能调整的关键知识点的深入了解,我们可以更有效地管理和优化数据库系统的性能。这不仅有助于提升应用程序的响应速度,...

    高级owi与oracle性能调整

    - **SQL调优**:优化查询结构,合理使用索引。 - **内存调整**:调整SGA和PGA大小。 - **I/O优化**:减少磁盘访问次数。 - **并发控制**:合理设置锁等待时间。 ### 三、owi在线工作负载识别 #### 3.1 owi概念介绍...

    Sybase_Performance_Tuning

    - **持续改进**:性能调优是一个持续的过程,需要定期评估系统的表现,并根据需要进行调整。 #### 二、Sybase数据库的调优工具 ##### 2.1 操作系统调优工具 在进行Sybase ASE性能调优时,操作系统级别的调优同样...

    apache-phoenix-4.14.0-HBase-1.2-src.tar.gz

    Phoenix将SQL查询转换为HBase的原生操作,使得开发者能够使用SQL语法与HBase进行交互,而无需深入理解HBase的Java API。4.14.0是Phoenix的一个稳定版本,针对HBase 1.2版本进行了优化。 在"apache-phoenix-4.14.0-...

    收获,不止SQL优化--抓住SQL的本质

    1.2 整体性能工具的要点 4 1.2.1 五大性能报表的获取 5 1.2.2 五大报表关注的要点 10 1.3 案例的分享与交流 18 1.3.1 和并行等待有关的案例 18 1.3.2 和热块竞争有关的案例 19 1.3.3 和日志等待有关的案例 20...

    让oracle跑的更快

    #### 二、SQL调优技巧 ##### 2.1 索引优化 索引是提高SQL查询速度的关键手段之一。合理地创建和维护索引可以极大地提升查询效率。 - **创建有效索引**:确保经常出现在WHERE子句中的列上都创建了索引。 - **避免...

    DBA 应遵循的 Oracle 调优原则

    **1.2 使用有效的SQL语法** Oracle SQL语言的强大功能使得DBA能够通过简单的SQL命令实现复杂的查询需求。然而,并非所有SQL语句都具有相同的执行效率。为了提高性能,DBA应遵循以下建议: - **选择性高的索引**:...

    程序员的SQL金典.rar

    透彻分析函数、子查询、表连接、不同DBMS中的SQL语法差异、SQL调优、NULL值处理、事务、开窗函数等高级技术;通过对实际案例开发过程的详细分析,使读者掌握 SQL的综合应用技巧。 内容简介 本书主要介绍SQL的语法...

    基于Oracle数据库的SQL语句优化 (1).pdf

    【标题】:基于Oracle数据库的SQL语句优化 【描述】:本文主要探讨了在Oracle数据库环境下如何优化SQL语句,以提高数据库性能和查询效率。...在实际应用中,应根据具体情况进行细致的性能测试和调优,以达到最佳效果。

    OCP 11g 教材 PDF

    - **故障诊断与性能调优**:学习使用性能分析工具(如 SQL*Plus, tkprof, AWR, ASH 等),识别和解决性能问题。 通过 OCP 11g 认证的学习和考试,数据库管理员可以证明自己具备管理和维护 Oracle 11g 数据库系统所...

    OceanBase SQL管理员手册.docx

    - 显示查询执行计划,用于性能调优。 **3.4 altersystemset语句** - **语法:** `ALTER SYSTEM SET variable_name = value` - 修改系统级别的配置项,与`2.2`节中的描述相同。 #### 内部表 - OceanBase 使用内部...

    Professional.Microsoft.SQL.Server.2012.Reporting.Services

    - **性能调优**:针对大型数据集的性能优化策略。 #### 四、用户报表 **4.1 Tabular Models** - **模型创建**:介绍如何创建表格模型。 - **数据关系**:管理和维护数据之间的关系。 - **安全性设置**:设置不同...

    Oracle SQL最佳实践

    - **原因复杂**:性能下降的原因可能是多方面的,并非简单地表现为“慢”。 ##### 1.2 优化什么(What) - **系统层面**:操作系统配置、资源分配等。 - **数据库层面**:数据库配置、表结构、索引等。 - **应用...

    人大进仓+KingbaseEs+SQL

    根据给定文件的信息,我们可以提炼出关于金仓数据库管理系统KingbaseES的相关知识点,特别是围绕其SQL语言使用手册的内容。下面将详细介绍这些知识点。 ### 1. 金仓数据库管理系统 KingbaseES 概述 #### 1.1 适用...

    ORACLE PLSQL实例精解(第4版) 中文版

    **1.2 PL/SQL环境搭建** - **安装Oracle数据库**:确保系统中已经安装了Oracle数据库服务器。 - **PL/SQL Developer工具**:安装并配置PL/SQL Developer等开发工具。 - **SQL*Plus**:利用SQL*Plus进行基本的数据库...

Global site tag (gtag.js) - Google Analytics