高效SQL攻略

原创 2015年11月17日 16:06:44


1.FROM子句里的表
 一般来说,把较小的表列在前面,把较大的表列在后面,就会获得更好的性能。

2.结合条件的次序
 大多数结合使用一个基表链接到具有一个或多个共有字段的其他表,基表是主表
 查询里的大多数或全部表都与它结合,通常,在WHERE子句里来自基表的字段一般
 放到结合操作的右侧,要结合的表还是按照从小到大的次序排列。
 
3.最严格条件
 最严格的条件就是:WHERE子句里返回最少记录的条件,与之相反,最宽松的条件就是
 语句里返回最多记录的条件。
 
 一般要把最严格的条件放在WHERE语句的末尾,从而让优化器首先读取它
 下面举例说明:
  WHERE LAST_NAME = 'SMITH';返回2000条记录
  WHERE CITY = 'INDIANAPOLIS';返回3000条记录
   那么,最严格的条件就是“WHERE LAST_NAME = 'SMITH'”
 
 从实践总结出来的经验表明,最好使用具有索引的字段作为查询里的最严格条件,索引
 通常会改善查询的性能。
 
4.全表扫描与索引
 在没有索引时,就会发生全表扫描;
 全表扫描一般比索引慢;
 最简单的避免全表扫描的方式就是在WHERE子句里设置条件来过滤返回的数据;
 全表扫描对于查询小型表或返回表里面大部分记录是高效的;
 下面是应该被索引的数据:
  作为主键的字段;
  作为外键的字段;
  在结合表里经常使用的字段;
  经常在查询里作为条件的字段;
  大部分唯一值得字段;
  
5.避免使用OR操作符
 在SQL语句里用谓词IN代替OR操作符能够提高数据检索速度,下面举例说明:
 SELECT EMP_ID
 FROM EMPLOYEE_TBL
 WHERE CITY = 'INDIANAPOLIS'
  OR CITY = 'BROWNSBURG'
  OR CITY = 'GREENFIELD'
 下面是用一个查询,使用了IN:
 SELECT EMP_ID
 FROM EMPLOYEE_TBL
 WHERE CITY IN('INDIANAPOLIS','BROWNSBURG','GREENFIELD')
  这个连个SQL返回结果相同,测试发现,用IN代替OR后,检索数据的速度明显提高了。
  
6.避免使用HAVING子句
 如果需要使用,最好尽可能地使其中的限制条件简单化。
 
7.避免大规模排序操作
 使用ORDER BY,GROUP BY,HAVING等。
 
8.使用存储过程
 可以为经常运行的SQL语句(特别是大型事务或查询)创建存储过程,所谓存储过程就是
 经过编译的,以可执行格式永久保存在数据库里的SQL语句,以类似于数据库对象的形式管理。

9.在批量加载操作前后删除并重建索引是一个优点,同时可以减少索引碎片,批加载可能包含
 数百,数千或数百万操作语句或事物。

版权声明:转载记得加个链接。

高效使用Ubuntu技能攻略

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://githu...
  • AllenWells
  • AllenWells
  • 2015年08月13日 11:25
  • 1216

写高效的SQL语句

SQL优化总结 1,where的条件顺序影响查询速度 WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之...
  • reggergdsg
  • reggergdsg
  • 2017年02月19日 17:49
  • 621

oracle 高效Sql语句总结

No SQL,No cost. SQL语句是造成数据库开销最大的部分。而不良SQL写法直接导致数据库系统性能下降的情形比比皆是。那么如何才能称得 上高效的SQL语句呢?一是查询优化器为当前的SQL语句...
  • lan12334321234
  • lan12334321234
  • 2017年04月11日 11:14
  • 102

SQL多表联合查询高效率

多表联合查询效率 今天做项目时,用到了多表查询。有三个表分别为et_task_termtt,et_core_thes_term_category ttc , et_core_thes_terms...
  • meng6098
  • meng6098
  • 2012年07月18日 11:29
  • 1807

Oracle 如何写出高效的 SQL

-- Start 要想写出高效的SQL 语句需要掌握一些基本原则,如果你违反了这些原则,一般情况下SQL 的性能将会很差。 1. 减少数据库访问次数 连接数据库是非常耗时的,虽然应用程序会采...
  • shangboerds
  • shangboerds
  • 2015年06月23日 10:51
  • 1112

如何编写高效的SQL查询语句

概述        操作数据库时,我们需要写相应的SQL语句,当然,如果你是使用...
  • jiben2qingshan
  • jiben2qingshan
  • 2014年07月31日 23:55
  • 1959

高效sql性能优化极简教程

一,sql性能优化基础方法论 对于功能,我们可能知道必须改进什么;但对于性能问题,有时我们可能无从下手。其实,任何计算机应用系统最终队可以归结为: cpu消耗 内存使用 ...
  • huaieli1
  • huaieli1
  • 2017年12月05日 14:57
  • 90

sql高效去重重复数据方法

方法源地址  http://bbs.csdn.net/topics/380088407  其中5楼版主的回答
  • kasim416
  • kasim416
  • 2016年04月28日 11:14
  • 235

如何写出高效的SQL语句(从建表到查询一步一步往后说)

建表时可以得出以下优化建议 1、 数据类型尽量用数字型,数字型比字符型的快 2、 选择正确的表引擎 MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要...
  • Noneyes
  • Noneyes
  • 2017年04月21日 19:59
  • 730

如何创建高效的索引

要让创建的索引真正有效,是需要一个过程的,不是系统上线之前调一下就行了,而是需要在系统运行过程中,不断调整。 (1)考虑索引本身的特性 在前面的文章中,已经说了,索引的3个特性:有序、索引...
  • yupeigu
  • yupeigu
  • 2018年01月23日 13:18
  • 88
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:高效SQL攻略
举报原因:
原因补充:

(最多只允许输入30个字)