您的位置:首页 > 数据库

优化SQL语句

2016-04-07 14:07 357 查看
保证在实现功能的基础上,尽量减少对数据库的访问次数; 

通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担。


能够分开的操作尽量分开处理,提高每次的响应速度。



1. SELECT子句中尽量避免使用 ‘* ’。

即便是查询再多的项也要逐个列出,不要使用 * 。

2.用>=替代>。

比如:

SELECT * FROM S WHERE ID>=4



SELECT * FROM S WHERE ID>3

效率高。

两者的区别在于:

前者DBMS(数据库管理系统)将直接跳到第一个ID等于4的记录,

而后者将首先定位到ID=3的记录并且向前扫描到第一个DEPT大于3的记录。

3.用表连接代替子查询in。

4.WHERE子句中的连接顺序。

ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。

5.选择最有效率的表名顺序。

ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table)将被最先处理. 在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表。

6.查询多条数据,主键要放在最后

尽量避免在WHERE子句中对字段进行函数或表达式操作,这将导致引擎放弃使用索引而进行全表扫描

7.尽量避免在WHERE子句中对字段进行函数或表达式操作,这将导致引擎 放弃使用索引而进行全表扫描。

如: 

 SELECT * FROM T1 WHERE F1/2=100 

应改为: 

 SELECT * FROM T1 WHERE F1=100*2

8.在数据窗口使用SQL时,尽量把使用的索引放在选择的首列。




9.算法的结构尽量简单。

10.未完待续。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SQL 优化