oracle+SQL优化实例
1. 减少I/O操作:
SELECT COUNT(CASE WHEN empno>20 THEN 1 END) c1,COUNT(CASE WHEN empno<20 THEN 1 END) c2
FROM emp;
2. 通过rowid访问
SELECT ROWID,emp.* FROM emp
WHERE ROWID=chartorowid('AAAHW7AABAAAMUiAAA')
3.
使用索引唯一扫描
SELECT empno,ename FROM emp
WHERE empno='2000'
4.
使用并连接符号会使oracle忽略使用索用,即使是唯一索引
SELECT empno,ename FROM emp
WHERE empno||ename='2000naem'
改成这样就可使用索引了
SELECT * FROM emp
WHERE empno=2000 AND ename='dd'
5.
索引范围扫描
SELECT * FROM emp
WHERE empno<7000
6. where条件子句的解析顺序是从下到上的
SELECT a.empno,b.dname FROM emp a,dept
b
WHERE a.ename<'CLERK'
AND a.deptno=b.deptno;
耗时1.016秒
SELECT a.empno,b.dname FROM emp a,dept b
WHERE a.deptno=b.deptno
AND a.ename<'CLERK';
耗时0.813秒
7.
使用通配符会使oracle不去使用索引
SELECT ename FROM emp
WHERE ename LIKE '%C%'
应改成
SELECT ename FROM emp
WHERE ename LIKE 'C%'
8.
使用唯一索引查找精确值是最快的,而索引范围扫描比较适合查找>=,<=的数据
SELECT a.itemid
FROM pt_sche_detail a,
pt_post_role b
WHERE a.itemid = b.taskid
AND a.docid = 2281
AND a.itemid != 1169015
AND a.status != 0
AND b.posttype = 1
AND b.roleid = 1022
AND b.roletype = 1
上面的语句改成:
SELECT a.itemid
FROM pt_sche_detail a,
pt_post_role b
WHERE a.itemid = b.taskid
AND a.docid = 2281
AND a.itemid != 1169015
AND a.status != 0
AND b.taskid IN
(SELECT itemid
FROM pt_sche_detail temp
WHERE temp.docid = 2281
AND rownum <= (SELECT COUNT(itemid)
FROM pt_sche_detail temp WHERE temp.docid = 2281))
AND b.roleid = 1022
AND b.roletype = 1
AND b.posttype = 1
oracle+SQL优化实例的更多相关文章
- Oracle SQL优化[转]
Oracle SQL优化 1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化 ...
- mysql sql优化实例
mysql sql优化实例 优化前: pt-query-degist分析结果: # Query 3: 0.00 QPS, 0.00x concurrency, ID 0xDC6E62FA021C85B ...
- oracle sql 优化大全
转自: http://panshaobinsb.iteye.com/blog/1718233 http://yulimeander.blog.sohu.com/115850824.html 最近遇到了 ...
- Oracle SQL 优化规则
一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...
- Oracle SQL 优化原则(实用篇)
由于SQL优化优化起来比较复杂,并且还受环境限制,在开发过程中,写SQL必须遵循以下几点原则: 1.Oracle 采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他Where ...
- oracle sql优化
整理一下网上所看到sql优化方法 1.使用大写字母书写sql,因为oracle解释器会先将sql语句转换成大写后再解释 2 减少访问数据库的次数,多数情况下一条sql可以达到目的的,就不要使用多 ...
- Oracle SQL优化一(常见方法)
1.表访问方式优化: a)普通表优先“Index Lookup 索引扫描”,避免全表扫描 大多数场景下,通过“Index Lookup 索引扫描”要比“Full Table Scan (FTS) 全表 ...
- oracle sql优化笔记
oracle优化一般分为:1.sql优化(现在oracle都会根据sql语句先进行必要的优化处理,这种应该用户不大了,但是像关联和嵌套查询肯定是和影响性能的) A.oracle的sql语句的条件是从右 ...
- Oracle SQL优化器简介
目录 一.Oracle的优化器 1.1 优化器简介 1.2 SQL执行过程 二.优化器优化方式 2.1 优化器的优化方式 2.2 基于规则的优化器 2.3 基于成本的优化器 三.优化器优化模式 3.1 ...
随机推荐
- JavaScript 数组的常用操作
JavaScript splice 方法 splice 方法用于插入.删除或替换数组的元素.语法如下: array_object.splice(start, num, element1, elemen ...
- windows Server2012 之 IIS8.0配置安装完整教程
IIS8.0是windows Server2012自带的服务器管理系统,和以往不同,IIS8.0安装和操作都比较简单,界面很简洁,安装也很迅速.今天我们重点完整的演示下Internet Informa ...
- UITableViewCell 添加 checkbox 多选
TableViewCell多选: CheckBox; - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndex ...
- h5移动端百分比
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- VUE 数组更新
1.数据方法分类: (1)原数组改变 push pop unshift shift reverse sort splice (2)原数组未变,生成新数组 slice concat filter map ...
- XML Schema学习札记(1)——基础总览
内容整理自:www.w3school.com.cn 转载自:http://www.xgezhang.com/xml_schema_1.html 什么是XML Schema? XML Schema 是基 ...
- Docker Container同时启动多服务 supervisor
Docker Container同时启动多服务 转载请注明来自:http://blog.csdn.net/wsscy2004 昨天踩了个天坑,我有一个基本的镜像centos6.5+ssh,是通过Doc ...
- 哪种代理适合用于Web数据采集
在Web数据采集中为了避免被服务器封锁而通过代理下载的情况很常见.但是,并非所有的代理都适合于Web数据采集.下面是鲲鹏数据的技术人员给出的说明. 根据HTTP代理的匿名性可以将其分为以下几种: ...
- FtpHelper类匿名获取FTP文件
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...
- ASP.NET前后台交互之JSON数据
最近由于项目需要做一个Ajax的搜集单表单的多重数据的需求,所以就采用了前端JQuery保存Object对象之后转换成JSON的数据源传递给后台处理的这样的形式,相信有不少人大多时候是接收后台给出的J ...