优化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.未完待续。。。
通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担。
能够分开的操作尽量分开处理,提高每次的响应速度。
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.未完待续。。。
相关文章推荐