Oracle语句优化1
Oracle语句优化1
优化就是选择最有效的方法来执行SQL语句。Oracle优化器选择它认为最有效的
方法来执行SQL语句。
1. IS NULL和IS NOT NULL
如果某列存在NULL值,即使对该列建立索引也不会提高性能。
2. 为不同的工作编写不同的SQL语句块。
为完成不同的工作编写一大块SQL程序不是好方法。它往往导致每个任务的结果不优
化。若要SQL完成不同的工作,一般应编写不同的语句块比编写一个要好。
3. IN 和EXISTS
Select name from employee where name not in (select name from student);
Select name from employee where not exists (select name from student);
第一句SQL语句的执行效率不如第二句。
通过使用EXISTS,Oracle会首先检查主查询,然后运行子查询直到它找到第一个匹配
项,这就节省了时间。Oracle在执行IN子查询时,首先执行子查询,并将获得的结果
列表存放在一个加了索引的临时表中。在执行子查询之前,系统先将主查询挂起,待
子查询执行完毕,存放在临时表中以后再执行主查询。这也就是使用EXISTS比使用IN
通常查询速度快的原因。
4. NOT 运算符
Select * from employee where salary<>1000;
Select * from employee where salary<1000 or salary>1000;
第一句SQL语句的执行效率不如第二句,因为第二句SQL语句可以使用索引。
5. Order By 语句
Order By 语句的执行效率很低,因为它要排序。应避免在Order By 字句中使用表达式。
6. 列的连接
select * from employee where name||department=’ZYZBIOINFO’;
select * from employee where name=’ZYZ’ and department=’BIOINFO’;
这两个查询,第二句比第一句会快,因为对于有连接运算符’||’的查询,Oracle优化器是不
会使用索引的。
7. 通配符‘%’当通配符出现在搜索词首时,Oracle优化器不使用索引。
Select * from employee where name like ‘%Z%’;
Select * from employee where name like ‘Z%’;
第二句的执行效率会比第一句快,但查询结果集可能会不同。
8. 应尽量避免混合类型的表达式。
假设字段studentno为VARCHAR2类型
有语句select * from student where studentno>123;
则Oracle会有一个隐含的类型转换。隐含的类型转换可能会使Oracle优化器忽略索引。
这时应使用显式的类型转换select * from student where studentno=to_char(123)。
9.DISTINCT
DISTINCT总是建立一个排序,所以查询速度也慢。
Oracle语句优化1的更多相关文章
- 53个Oracle语句优化规则详解(转)
Oracle sql 性能优化调整 1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种:a. RULE (基于规则) b. COST (基于成本) c. CHOOSE ...
- oracle 语句优化
1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可 ...
- Oracle语句优化规则(一)
1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化 ...
- Oracle语句优化规则(二)
21. 用EXISTS替换DISTINCT 当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句中使用DISTINCT. 一般可以考虑用EXIST替换 例如: ...
- oracle语句优化
摘录来自https://blog.csdn.net/sap_jack/article/details/3766703 1.选用适合的Oracle优化器 Oracle的优化器共有3种: a.RULE(基 ...
- Oracle语句优化之一
public List<TdDepartment> createZtreeDep(String compId) { List<TdDepartment> dd = new Ar ...
- oracle学习 十 数据库的语句优化(持续更)
平时关注Oracle数据库的网友都知道,Oracle性能优化保证了Oracle数据库的健壮性.下面就此提出需要注意的两个原则. 原则一:注意WHERE子句中的连接顺序: ORACLE采用自下而上的 ...
- oracle之sql语句优化
oracle之sql语句优化 sql语句的优化 1.在where子句中使用 is null 或 is not null 时,oracle优化器就不能使用索引了. 2.对于有连接的列,即使最有一个是静态 ...
- Oracle SQL语句优化34条
非常好用的SQL语句优化34条 1)选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 dri ...
随机推荐
- lua 远程调试 【zeroBrane 使用mobdebug】(good转)
最近基于业务需求,学习了如何使用zeroBrane这个IDE实现C/S 模式下的 lua远程调试,废话不多,上效果图: ---------------------------------------- ...
- 在mac os下编译android -相关文章
1. Mac OS X下编译Android源码 http://blog.csdn.net/bulreed/article/details/22783467 2.MAC OS 编译 Android源代码 ...
- bzoj 1874 取石子游戏 题解 & SG函数初探
[原题] 1874: [BeiJing2009 WinterCamp]取石子游戏 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 334 Solved ...
- 移动web:转盘抽奖(幸运大转盘)
为了获取客户.回馈客户,平台一般会推出抽奖活动类的营销页.因此web页面中,有各式各样的抽奖效果. 格子式(九宫格),背景滚动式(数字/文字/图案),旋转式(转盘),游戏式(砸蛋/拼图...).... ...
- jquery处理页面元素
处理父级页面中的元素 $(parent.document).find('#hidSendPerson').val(val);$(parent.document).find('#btnGo').clic ...
- 查看.a架构文件
苹果公司现在要求所有新提交的评论app,我们必须支持64位架构.而我们的在线项目编制,操作员做了一堆SDK在需要访问,我们发现,在这个过程中,有些SDK的.a文件进入后,链接错误,如提示 Undefi ...
- [LeetCode234]Palindrome Linked List
题目: Given a singly linked list, determine if it is a palindrome. 判断一个单链表是不是回文 思路: 1.遍历整个链表,将链表每个节点的值 ...
- NVIDIA+关联2015写学校招收评论(嵌入式方向,上海)
我没有写很长一段时间Blog中的一个,在过去的几个月中还没有看到太多的生长技术,来来回回一直在做的事情,要毕业找工作,但发现并没有冷静下来,准备过.这不是让人觉得暂时补习班是凡人啊. 本科不试试.那你 ...
- Linux课程_系统配置和日常维护
1.设置命令输入提示格公式:"username:当前文件夹$" 2.设置命令输入提示行格式为:"当前系统时间-用户#"(提示:Shell将通过反引號" ...
- C++学习笔记1--基础知识
#include <iomanip> setpresition(int n); 设置输出精度浮点数是n. [goto声明] goto也被称为无条件分支语句购买勇于改变运行顺序的声明.got ...