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

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

60天高效通过软考高级实战复习攻略(干货)

题记60天,对于上班族来说,只有晚上和周末时间,细算下,有效复习时间少得可怜。如果全力以赴且有一定计算机基础、项目管理经验的话,可以!否则,会比较难。软考信息系统项目管理工程师(信管高级)涉及9大知识...

告别路由,Windows 7下笔记本无线网络共享新攻略(快速,稳定,高效)

告别路由,Windows 7下笔记本无线网络共享新攻略(快速,稳定)支持的顶一下 1、请却仍您使用的操作系统是微软的Windows 7或者Windows server 2008 R2,正版盗版皆...

《Linux Shell脚本攻略》 笔记 第四章:高效文本处理

《Linux Shell脚本攻略》 笔记 第四章:高效文本处理 1、IP地址的正则表达式: [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} 2、gre...

高效使用Ubuntu技能攻略

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://githu...

分享Redis使用全攻略:如何跳出SQL这个坑

随着数据体积的激增,MySQL+memcache已经满足不了大型互联网类应用的需求,许多机构也纷纷选择Redis作为其架构上的补充,然而Redis的使用门槛并不低,比如不支持SQL等,这里为大家分享R...
  • WuxCSDN
  • WuxCSDN
  • 2015年12月22日 16:42
  • 886

T-SQL入门攻略之7-常見系統函數

1 :獲取服務器名與 ID select host_name () -- 獲取服務器端計算機名稱 /* GOLD-MIS06 */ select host_id ()    -- 獲取服務器...

SQL Server事务操作全攻略

2012年高考数学一轮复习资料集锦 一 事务的属性 事务具有ACID属性 即 Atomic原子性, Consistent一致性, Isolated隔离性, Durable永久性 原子性 ...

sql备份还原全攻略【鸡蛋】

转自:http://www.cnblogs.com/gaizai/archive/2011/06/29/2093575.html 一、知识点 完全备份:备份全部选中的文件夹,并...

SQL SERVER 全部语法攻略

http://www.cnblogs.com/Joetao/category/279444.html   SQL 触发器deleted 表和 inserted 表详解(转) 摘...
  • pt5320
  • pt5320
  • 2012年12月30日 13:44
  • 607

sql学习笔记(20)----------MySQL 索引优化全攻略

所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找。而用的最多,并且是mysql默认的就是二叉树算法 BTREE,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:高效SQL攻略
举报原因:
原因补充:

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