from
http://www.beyondrails.com/blogs/42
遵守以下准则:
1,查询条件的左边应该是简单的column名,右边则应该是很容易查询的值
所有的DBMS都会把5 = column1转换为column1 = 5
2,查询条件的每个组件都有一个point count,查询速度越快,花的时间越少,points越高
操作符、操作数 points
= 10
> 5
>= 5
< 5
<= 5
LIKE 3
<> 0
Literal alone 10
Column alone 5
Parameter alone 5
Multioperand expression 3
Exact numeric data type 2
Other numeric data type 1
Temporal data type 1
Character data type 0
NULL 0
例子
... WHERE smallint_column = 12345
points为27:
1,Column alone(smallint_column) = 5
2,Exact numeric data type(smallint_column) = 2
3,等号 = 10
4,Literal alone(12345) = 10
3,对于多个表达式条件通过优化顺序来提高速度
优化前:
SELECT * FROM Table1
WHERE column4 < 117
AND column4 > column5
AND column3 = 'Smith'
AND column1 = 5
AND column2 = 77.3
优化后:
SELECT * FROM Table1
WHERE column1 = 5
AND column2 = 77.3
AND column3 = 'Smith'
AND column4 < 117
AND column4 > column5
4,利用Law of Transitivity和Constant propagation的概念,使用字面量来替换column名和column表达式而不改变表达式的含义来提高速度
优化前:
SELECT * FROM Table1
WHERE column1 = 5 AND
NOT (column3 = 7 OR column1 = column2)
优化后:
SELECT * FROM Table1
WHERE column1 = 5
AND column3 <> 7
AND column2 <> 5
5,删除那些永远不会执行的代码
SELECT * FROM Table1
WHERE 0 = 1
AND column1 = 'I hope we never execute this'
6,有些DBMS不会对大部分obvious-looking表达式做“折叠”,记住一点“更改代码之前先理解它的含义”
... WHERE column1 + 0
... WHERE 5 + 0.0
... WHERE column1 IN (1, 3, 3)
... CAST(1 AS INTEGER)
... WHERE 'a' || 'b'
7,如果代码包括一些显然的算术表达式,则用计算后的值来替换。
优化前:
... WHERE a - 3 = 5
优化后:
... WHERE a = 8
8,尽量避免在column里引入function
优化前:
SELECT * FROM Table1
WHERE date_column = CURRENT_DATE
AND amount * 5 > 100.00
优化后:
SELECT * FROM Table1
WHERE date_column = DATE '2002-01-01'
AND amount * 5 > 100.00
9,不要使用UPPER来做大小写不敏感的匹配,使用LOWER
优化前:
... WHERE UPPER(column1) = 'résumé'
优化后:
... WHERE LOWER(column1) = 'résumé'
分享到:
相关推荐
T-SQL性能调优秘笈-基于SQL Server 2012窗口函数,适合数据库进阶。
资源名称:DB2 SQL性能调优秘笈资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
Chapter 01 - SQL Windowing.sql Chapter 02 - A Detailed Look at Window Functions.sql Chapter 03 - Ordered Set Functions.sql Chapter 04 - Optimization of Window Functions.sql Chapter 05 - T-SQL ...
一本很好的书,都是经验的积累,非常的实用
资源名称:T-SQL性能调优秘笈 基于SQL Server 2012窗口函数资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
绝对完整
T-SQL性能调优秘籍——基于SQL Server 2012窗口函数,书中提及的网站已经打不开了,在github上找到了。路径在附件中。
1、处理常见业务问题,如总计、间隔、...3、T-SQL性能调优秘笈:基于SQL Server 2012窗口函数》基于SQLServer2012,讨论了SQL窗口、窗口函数、排序集合函数、窗口函数的优化以及利用窗口函数的T-SQL解决方案等内容。
本文主要通过一下几个方面介绍:使用SQLDMV查找慢速查询、通过APM解决方案查询报告、SQLServer扩展事件、SQLAzure查询性能洞察等相关内容。本文来自博客园,由火龙果软件Anna编辑、推荐。SQLServer的一个重要功能是...
《T-SQL性能调优秘笈 基于SQL Server 2012窗口函数》的源代码 里面包含了五章的内容
oracle数据库的性能优化直接关系到系统的运行效率,而影响数据库性能...《oracle 高性能sql引擎剖析:sql优化与调优机制详解》内容丰富且深入,破解了oracle技术的很多秘密,适合oracle数据库管理员、应用开发人员参考。
Oracle+高性能SQL引擎剖析:SQL优化与调优机制详解
T-SQL性能调优秘笈 基于SQL Server 2012窗口函数,性能调优,学习sql的好书
性能调优:SQL Server硬件配置、选择硬件、调优服务器、优化SQL Server配置、SQL Server设计优化、优化数据库的设计、SQL Server调优SQL编程、如何优化你的T-SQL代码、谨慎使用触发器、 避免使用游标(Cursors)、...
Oracle Sql性能调优,内部培训文档
Oracle数据库的性能优化直接关系到系统的运行效率,而影响数据库性能...《Oracle 高性能SQL引擎剖析:SQL优化与调优机制详解》内容丰富且深入,破解了Oracle技术的很多秘密,适合Oracle数据库管理员、应用开发人员参考。
sql server性能调优 对sql的执行进行监控,用来做效率分析。可以用来做项目优化和SQL功能调优使用。
《DB2 SQL性能调优秘笈》.((美)Tony Andrews).[PDF].&ckook;
下载后,解压,等到pdf格式。推荐使用福昕手机app阅读,在手机上方便阅读。