sql语句的简单优化
2017-08-04 21:16
302 查看
1、选择最有效率的表名顺序
数据库的解析器按照从右到左的顺序处理from子句中的表名,from字句中写在最右边的表将最先被处理。在from字句中包含多个表的情况下,必须选择记录条数最少的表放在最后。
如果有3个以上的表做连接查询,那就需要选择哪个被其他表所引用的表放在最后;
例如:查询员工的id、姓名、工资、部门号以及部门所在的区域号
2)如果3个表示有关系的话,将引用最多的表放在最后,依次类推
2、where字句中的连接顺序
数据库采用自右而左的顺序解析where子句,根据这个原理,表之间的连接必须写在其他where条件之左,那些可以过滤掉最大数量记录的条件必须在where字句之
例如:查询工资大于1500的员工id、姓名和部门号
3、select字句中避免使用*号
数据库在解析的过程中,会将*依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费跟多的时间
4、尽量使用多表查询
若使用子查询最终也会被转换成多表查询,同样会耗费时间
5、避免全表扫描
Where中少用NOT、!=、<>、!<、!>、NOT EXISTS、NOT IN、NOT LIKE,它们会引起全表扫描。
6、用truncate替代delete
truncate属于ddl,不可回滚,表内容删除速度快;delete属于dml,可回滚,删除速度慢,需要逐条删除
7、尽量使用commit
因为commit会释放回滚点
8、尽量使用where语句代替having字句
因为where先执行而having后执行
9、尽量使用表和列的别名
10、多使用内部函数提高效率
数据库的解析器按照从右到左的顺序处理from子句中的表名,from字句中写在最右边的表将最先被处理。在from字句中包含多个表的情况下,必须选择记录条数最少的表放在最后。
如果有3个以上的表做连接查询,那就需要选择哪个被其他表所引用的表放在最后;
例如:查询员工的id、姓名、工资、部门号以及部门所在的区域号
select e.id,e.last_name,e.salary,d.id,r.id form s_region r,s_dept d,s_emp e where e.dept_id=d.id and d.region_id=r.id;1) 如果3个表是完全无关系的话,将记录和列名最少的表卸载最后,依次类推
2)如果3个表示有关系的话,将引用最多的表放在最后,依次类推
2、where字句中的连接顺序
数据库采用自右而左的顺序解析where子句,根据这个原理,表之间的连接必须写在其他where条件之左,那些可以过滤掉最大数量记录的条件必须在where字句之
例如:查询工资大于1500的员工id、姓名和部门号
select e.id,e.last_name,e.salary,d.id from s_dept d,s_emp e where e.dept_id=d.id and e.salary>1500;
3、select字句中避免使用*号
数据库在解析的过程中,会将*依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费跟多的时间
4、尽量使用多表查询
若使用子查询最终也会被转换成多表查询,同样会耗费时间
5、避免全表扫描
Where中少用NOT、!=、<>、!<、!>、NOT EXISTS、NOT IN、NOT LIKE,它们会引起全表扫描。
6、用truncate替代delete
truncate属于ddl,不可回滚,表内容删除速度快;delete属于dml,可回滚,删除速度慢,需要逐条删除
7、尽量使用commit
因为commit会释放回滚点
8、尽量使用where语句代替having字句
因为where先执行而having后执行
9、尽量使用表和列的别名
10、多使用内部函数提高效率
相关文章推荐
- Oracle sql语句简单优化
- Oracle sql语句简单优化
- sql语句的简单优化
- Sql语句的简单优化
- 一次简单的SQL语句优化
- Oracle sql语句简单优化
- sql查询语句的一些简单优化措施(持续补充)
- Oracle sql语句简单优化
- 自动生成简单的sql语句
- 浅谈ORACLE SQL语句优化经验
- 优化SQL查询:如何写出高性能SQL语句1、首先要搞明白什么叫执行计划?执行计划是数据库根据SQL
- 简单的sql server 2005 分页查询sql语句
- 数据库SQL语句优化小结
- 系统优化之数据库SQL语句的优化
- SQL语句优化
- SQL语句优化技术分析
- SQL查询语句优化
- SQL语句优化技术分析(1)
- 关于索引的sql语句优化之降龙十八掌
- 【MySQL】SQL语句优化