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的最后的过滤条件。
分享到:
相关推荐
《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...
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...
透彻分析函数、子查询、表连接、不同DBMS中的SQL语法差异、SQL调优、NULL值处理、事务、开窗函数等高级技术;通过对实际案例开发过程的详细分析,使读者掌握 SQL的综合应用技巧。 内容简介 本书主要介绍SQL的语法...
10.2.1 SQL调优的基本原则 10.2.2 索引 10.2.3 全表扫描和索引查找 10.2.4 优化手法 10.3 事务 10.3.1 事务简介 10.3.2 事务的隔离 10.3.3 事务的隔离级别 10.3.4 事务的使用 10.4 自动增长字段...
有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle ACE。 JARED STILL 从1994年就开始使用...
10.2.1 SQL调优的基本原则 10.2.2 索引 10.2.3 全表扫描和索引查找 10.2.4 优化手法 10.3 事务 10.3.1 事务简介 10.3.2 事务的隔离 10.3.3 事务的隔离级别 10.3.4 事务的使用 10.4 自动增长字段...
10.2.1 SQL调优的基本原则 10.2.2 索引 10.2.3 全表扫描和索引查找 10.2.4 优化手法 10.3 事务 10.3.1 事务简介 10.3.2 事务的隔离 10.3.3 事务的隔离级别 10.3.4 事务的使用 10.4 自动增长字段...
10.2.1 SQL调优的基本原则 10.2.2 索引 10.2.3 全表扫描和索引查找 10.2.4 优化手法 10.3 事务 10.3.1 事务简介 10.3.2 事务的隔离 10.3.3 事务的隔离级别 10.3.4 事务的使用 10.4 自动增长字段...
SQL Server 2008商业智能完美解决方案 3/3 SQL Server 2008 2010 商业智能完美解决方案 作者:兰吉特(Lynn Langit) 出版社:人民邮电出版社; 第1版 (2010年8月1日) ISBN:7115231117, 9787115231116 页码:545 ...
SQL Server 2008商业智能完美解决方案 3/3 SQL Server 2008 2010 商业智能完美解决方案 作者:兰吉特(Lynn Langit) 出版社:人民邮电出版社; 第1版 (2010年8月1日) ISBN:7115231117, 9787115231116 页码:545 ------...
10.2.2 MDX语法的其他元素 218 10.3 MDX核心函数 220 10.4 筛选MDX结果集 226 10.5 计算成员和命名集合 228 10.6 TopCount函数 230 10.7 Rank函数和组合 232 10.8 Head和Tail函数 235 10.9 MDX的层次结构函数 236 ...
SQL Server 2008商业智能完美解决方案 2/3 SQL Server 2008 2010 商业智能完美解决方案 作者:兰吉特(Lynn Langit) 出版社:人民邮电出版社; 第1版 (2010年8月1日) ISBN:7115231117, 9787115231116 页码:545 ------...
通过学习《Oracle Database 11g完全参考手册》,您可以了解如何实现最新的安全措施,如何调优数据库的性能,如何部署网格计算技术。附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 ...
通过学习《Oracle Database 11g完全参考手册》,您可以了解如何实现最新的安全措施,如何调优数据库的性能,如何部署网格计算技术。附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 ...
Java基本语法: 面向对象 接口 容器 异常 泛型: 反射 注释 I/O 图形化(如Swing) 1.1.2 JVM 类加载机制 字节码执行机制 jvm内存模型: GC垃圾回收 jvm性能监控与故障定位 jvm调优 1.1.3 并发与多线程 并发编程基础 ...