SQL优化由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“sql优化”。
SQL 性能优化
1.尽量使用UNIONALL 代替UNION
当SQL 语句需要UNION两个查询结果集合时,这两个结果集合会以UNION-ALL的方式被合并, 然后在输出最终结果前进行排序.如果用UNION ALL替代UNION, 这样排序就不是必要了.效率就会因此得到提高.需要注意的是,UNION ALL 将重复输出两个结果集合中相同记录.因此我们还是要从业务的实际需求分析使用UNION ALL的可行性.2.减少使用 *
我们在使用SQLUTILS来执行自己写SQL语句以实现我们想要的结果的时候,尽量少使用SELECT * FROM TABLE_NAME这样的语句来查询,因为ORACLE在解析的过程中, 会将*依次转换成你所要查询表的所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间.3.WHERE 语句的执行顺序
因为ORACLE采用的是自下而上的SQL语句执行顺序,所以大家在用到WHERE条件查询结果的时候,尽量将能够过滤掉大部分数据结果集的WHERE条件写到SQL语句的最后.4.使用表的别名来连接查询
当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误
5.用>=替代>
两者的区别在于:例如>=4和>3,两者的区别在于, 前者ORALCE将直接跳到第一个表记录中等于4的记录而后者将首先定位到表中=3的记录并且向前扫描到第一个表中大于3的记录
6.用EXISTS替换DISTINCT:
当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句中使用DISTINCT.一般可以考虑用EXIST替换, EXISTS 使查询更为迅速,因为RDBMS核心模块将在子查询的条件一旦满足后,立刻返回结果.7.SQL语句尽量用大写
虽然ORACEL在执行用户的SQL是对用户SQL的输入不区分大小写,但是实际上ORACLE在执行SQL语句的时候总是会先将SQL语句的小写字母转换成大写.