日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle+SQL优化实例

發布時間:2025/4/16 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

?

轉載于:https://www.cnblogs.com/huangf714/p/5876316.html

總結

以上是生活随笔為你收集整理的oracle+SQL优化实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。