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 ...
随机推荐
- 记一次vue2项目部署nginx静态文件404解决过程
github上下的一个vue2的项目,运行可以的,webpack打包后,nginx请求报错: 发现路径很奇怪啊,所以果断来到build.js文件中看看是不是哪里不对. 已经一番引用查找: 发现在这里配 ...
- sprintf、vsprintf、sprintf_s、vsprintf_s、_snprintf、_vsnprintf、snprintf、vsnprintf 函数辨析
看了题目中的几个函数名是不是有点头晕?为了防止以后总在这样的细节里纠缠不清,今天我们就来好好地辨析一下这几个函数的异同. 实验环境: Windows下使用VS2017Linux下使用gcc4.9.4 ...
- vue - webpack.dev.conf.js
描述:开发时的配置.(配置开发时的一些操作) 例如这里,是否自动打开浏览器(默认true) 'use strict' // build/util.js const utils = require('. ...
- [leetcode]Path Sum--巧用递归
题目: Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up ...
- [Exception IOS 4] - could not build module 'foundation'
出现这个问题首先百度找到的是:http://www.cocoachina.com/bbs/read.php?tid=188086 然后在blog中能找到链接:http://stackoverflow. ...
- XAudio2学习之混音
XAudio2不仅能够进行採样率转换.还能够进行混音.所谓混音就是将多路音频混合成一路进行输出.混音主要是IXAudio2SubmixVoice进行此项功能. 数据由IXAudio2SourceVoi ...
- 一学就会之ado.net(一)
ado.net十一组用于和数据源进行交互的面向对象类库.数据源能够是数据库也能够是文本文件.excel表格或者XML文件. 简单来说.ado.net就是与不同的数据源进行交互(增删改查)的. ado. ...
- 【Linux】Ctentos下载
百度输入:Download Centos 在百度搜索Download Centos然后进入Centos下载官网 点击上述标记的Download Centos,则会出现如下界面,并且点击"Mo ...
- 关于数组中加入相同的view的试验
随便新建一个工程,然后在控制器中粘贴如下代码 - (void)viewDidLoad { [super viewDidLoad]; UIView * view = [[UIView alloc]ini ...
- MQTT Client软件-MQTTBox
最近发现了一个连接mqtt broker的软件:MQTTBox.GitHub地址:https://github.com/workswithweb/MQTTBox 官网网站的介绍为:使用MQTTBox增 ...