这周,公司的DBA为我们做了SQL优化的简单培训,听了觉得受益匪浅,这里记录了主要内容。
1. 不用select *, 只select需要的字段
2. >,<,>=,<=
>=3 的效率要高于>2
3. where email like 'A%' 的效率要高于 email like '%A%'
mysql> explain select count(*) from User where email like 'A%';
+----+-------------+-------+-------+----------------+----------------+---------+------+------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+----------------+----------------+---------+------+------+--------------------------+
| 1 | SIMPLE | User | range | IDX_User_email | IDX_User_email | 258 | NULL | 112 | Using where; Using index |
+----+-------------+-------+-------+----------------+----------------+---------+------+------+--------------------------+
1 row in set (0.01 sec)
mysql> explain select count(*) from User where email like '%A%';
+----+-------------+-------+-------+---------------+----------------+---------+------+------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+----------------+---------+------+------+--------------------------+
| 1 | SIMPLE | User | index | NULL | IDX_User_email | 258 | NULL | 3745 | Using where; Using index |
+----+-------------+-------+-------+---------------+----------------+---------+------+------+--------------------------+
1 row in set (0.00 sec)
4. UNION 与 UNION ALL
UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
UNION ALL操作符替代UNION,因为UNION ALL操作只是简单的将两个结果合并后就返回。
如果明确知道两个查询不会有交集,使用UNION All
5. IS NULL和 IS NOT NULL 在查询中将不会使用index
mysql> select sql_no_cache count(*) from Interview i where TRIM(i.Email) != '' and i.Email IS NOT NULL;
+----------+
| count(*) |
+----------+
| 409 |
+----------+
1 row in set (2.07 sec)
mysql> select sql_no_cache count(*) from Interview i where i.Email>'';
+----------+
| count(*) |
+----------+
| 409 |
+----------+
1 row in set (0.00 sec)
Other example :and length(trim(c.Address1)) > 0 and v.confid is not null and v.confid != 0
| ConfID | int(11) | YES | | NULL | |
and c.Address1 > '' and v.confid>0
6. Expression
mysql> explain select * from User where id+1=59938552;
mysql> explain select * from User where id=59938551;
where salary/2=5000
7. Function
where Year(v.VisitDate) = Year(now()) and Month(v.VisitDate) = Month(now())
VisitDate>=DATE_FORMAT(now(),'%Y-%m-01 00:00:00') and VisitDate< DATE_FORMAT(date_add(now(), interval 1 month),'%Y-%m-01 00:00:00');
8. IN,EXISTS和 Inner Join
mysql> explain select id from Business where NodeGroup in (select value from NodeGroup where name='NodeGroup');
mysql> explain select id from Business where exists (select 1 from NodeGroup where Business.NodeGroup =value and name='NodeGroup');
Exists can use for subquery get large result set。
mysql> explain select b.id from Business b inner join NodeGroup n on b.NodeGroup =n.value
where n.name='NodeGroup';
分享到:
相关推荐
SQL优化 SQL优化软件 SQL优化工具 很好用的工具,可以分析优化TSQL语句,oracle数据库语句优化工具
第2章 风驰电掣——有效缩短SQL优化过程 24 2.1 SQL调优时间都去哪儿了 25 2.1.1 不善于批处理频频忙交互 25 2.1.2 无法抓住主要矛盾瞎折腾 25 2.1.3 未能明确需求目标白费劲 26 2.1.4 没有分析操作难度乱调优...
跟着乐于分享的数据库大师梁敬彬抓住表象背后的SQL本质 有人就有江湖,有江湖就有IT系统,有IT系统就有数据库,有数据库就有SQL,SQL..., 随后《收获,不止SQL优化——抓住SQL的本质》指引大家学会等价改写、过程包
1. SQL优化 1 1.1. 优化实战 1 1.1.1. 策略1.尽量全值匹配 1 1.1.2. 策略2.最佳左前缀法则 2 1.1.3. 策略3.不在索引列上做任何操作 2 1.1.4. 策略4.范围条件放最后 3 1.1.5. 策略5.覆盖索引尽量用 3 1.1.6. 策略6.不...
sql优化
本书是作者十年磨一剑的成果之一,深入分析与解剖oracle sql优化与调优技术,主要内容包括: 第一篇“执行计划”详细介绍各种执行计划的含义与操作,为后面的深入分析打下基础。重点讲解执行计划在sql语句执行的...
sql优化的几种方法sql优化的几种方法sql优化的几种方法sql优化的几种方法sql优化的几种方法
基于Oracle的SQL优化
深入揭示OracleSQL优化与调优的原理、核心技术与思想方法 盖国强鼎力推荐! Oracle数据库的性能优化直接关系到系统的运行效率,而影响数据库性能的一个重要因素就是SQL性能问题。本书是作者十年磨一剑的成果之一...
SQL Server SQL优化
基于Oracle的SQL优化
sql优化sql优化sql优化sql优化
本书是作者十年磨一剑的成果之一,深入分析与解剖Oracle SQL优化与调优技术,主要内容包括: 第一篇“执行计划”详细介绍各种执行计划的含义与操作,为后面的深入分析打下基础。重点讲解执行计划在SQL语句执行的生命...
Oracle_SQL优化脚本_完整实用资源,请下载 。
《基于Oracle的SQL优化》PDF版本下载
, 现在《收获,不止SQL优化——抓住SQL的本质》开始带你抛除烦恼,走进优化的可乐世界!, 首先教你SQL整体优化、快速优化实施、如何读懂执行计划、如何左右执行计划这四大必杀招。整这些干嘛呢?答案是,传授一个先...
崔华的《基于Oracle的SQL优化》一书配套脚本,纯手打
《基于Oracle的SQL优化》是本土Oracle数据库性能优化大师泣血力作,集十数年实战修行与潜心钻研之大成;盖国强等国内数据库一线名家联合推荐;囊括数据库性能优化技术所有分支与脉络,讲解通俗,实例经典。