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的最后的过滤条件。
分享到:
相关推荐
2. **SQL解析**:MySQL服务器接收到SQL命令后,首先对其进行解析,确定语法是否正确,并生成抽象语法树(AST)。 3. **优化器处理**:根据AST生成初步的执行计划,然后通过优化器进行优化,生成最终的执行计划。 4. ...
《mysql管理之道:性能调优、高可用与监控》由资深mysql专家撰写,以最新的mysql版本为基础,以构建高性能mysql服务器为核心,从故障诊断、表设计、sql优化、性能参数调优、mydumper逻辑、xtrabackup热备份与恢复、...
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调优过程中快速定位问题语句。 - **数据库管理员(DBA)**: 监控系统活动,及时发现并解决异常性能问题。 - **硬件/软件管理人员**: 提供系统配置详情,支持系统设计...
- **SQL调优工具**:使用Oracle提供的调优工具,如SQL Tuning Advisor。 ### 结论 通过对SQL性能调整的关键知识点的深入了解,我们可以更有效地管理和优化数据库系统的性能。这不仅有助于提升应用程序的响应速度,...
- **SQL调优**:优化查询结构,合理使用索引。 - **内存调整**:调整SGA和PGA大小。 - **I/O优化**:减少磁盘访问次数。 - **并发控制**:合理设置锁等待时间。 ### 三、owi在线工作负载识别 #### 3.1 owi概念介绍...
- **持续改进**:性能调优是一个持续的过程,需要定期评估系统的表现,并根据需要进行调整。 #### 二、Sybase数据库的调优工具 ##### 2.1 操作系统调优工具 在进行Sybase ASE性能调优时,操作系统级别的调优同样...
Phoenix将SQL查询转换为HBase的原生操作,使得开发者能够使用SQL语法与HBase进行交互,而无需深入理解HBase的Java API。4.14.0是Phoenix的一个稳定版本,针对HBase 1.2版本进行了优化。 在"apache-phoenix-4.14.0-...
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调优技巧 ##### 2.1 索引优化 索引是提高SQL查询速度的关键手段之一。合理地创建和维护索引可以极大地提升查询效率。 - **创建有效索引**:确保经常出现在WHERE子句中的列上都创建了索引。 - **避免...
**1.2 使用有效的SQL语法** Oracle SQL语言的强大功能使得DBA能够通过简单的SQL命令实现复杂的查询需求。然而,并非所有SQL语句都具有相同的执行效率。为了提高性能,DBA应遵循以下建议: - **选择性高的索引**:...
透彻分析函数、子查询、表连接、不同DBMS中的SQL语法差异、SQL调优、NULL值处理、事务、开窗函数等高级技术;通过对实际案例开发过程的详细分析,使读者掌握 SQL的综合应用技巧。 内容简介 本书主要介绍SQL的语法...
【标题】:基于Oracle数据库的SQL语句优化 【描述】:本文主要探讨了在Oracle数据库环境下如何优化SQL语句,以提高数据库性能和查询效率。...在实际应用中,应根据具体情况进行细致的性能测试和调优,以达到最佳效果。
- **故障诊断与性能调优**:学习使用性能分析工具(如 SQL*Plus, tkprof, AWR, ASH 等),识别和解决性能问题。 通过 OCP 11g 认证的学习和考试,数据库管理员可以证明自己具备管理和维护 Oracle 11g 数据库系统所...
- 显示查询执行计划,用于性能调优。 **3.4 altersystemset语句** - **语法:** `ALTER SYSTEM SET variable_name = value` - 修改系统级别的配置项,与`2.2`节中的描述相同。 #### 内部表 - OceanBase 使用内部...
- **性能调优**:针对大型数据集的性能优化策略。 #### 四、用户报表 **4.1 Tabular Models** - **模型创建**:介绍如何创建表格模型。 - **数据关系**:管理和维护数据之间的关系。 - **安全性设置**:设置不同...
- **原因复杂**:性能下降的原因可能是多方面的,并非简单地表现为“慢”。 ##### 1.2 优化什么(What) - **系统层面**:操作系统配置、资源分配等。 - **数据库层面**:数据库配置、表结构、索引等。 - **应用...
根据给定文件的信息,我们可以提炼出关于金仓数据库管理系统KingbaseES的相关知识点,特别是围绕其SQL语言使用手册的内容。下面将详细介绍这些知识点。 ### 1. 金仓数据库管理系统 KingbaseES 概述 #### 1.1 适用...
**1.2 PL/SQL环境搭建** - **安装Oracle数据库**:确保系统中已经安装了Oracle数据库服务器。 - **PL/SQL Developer工具**:安装并配置PL/SQL Developer等开发工具。 - **SQL*Plus**:利用SQL*Plus进行基本的数据库...