Oracle 調優讀書筆記二

2021-06-10 01:53:59 字數 1287 閱讀 8746

當某個索引包含有多個已索引的列時,我們稱這個索引為組合(concatenated)索引或是復合索引。雖

然oracle 9i 引入的跳躍式掃瞄索引訪問方法增強了優化器在使用組合索引時的選擇,但是您應該謹慎地

選擇索引中的列順序。一般來說,索引的第一列應該是最有可能在where 子句中使用的列,並且也是索引

中最具選擇性的列。

在引入跳躍式掃瞄功能之前,查詢只能在where 子句中使用索引的第一列時使用索引。考慮如下程式

清單中的示例,其中表emp 有乙個組合索引,該索引包含了empno、ename 和deptno。注意第一部分是empno,

第二部分則是ename,最後是deptno。如果沒有使用跳躍式掃瞄功能,除非在where 子句中對第一列(empno)

指定乙個值,否則oracle 一般不會使用這個索引。

select job, empno

from emp

where ename = 'rich';

因為ename 不是索引的第一列,優化器可能會選擇不使用該索引。隨著在oracle 9i 中引入了跳躍式

掃瞄功能,即使在where 子句中沒有指定empno 值,優化器也可能會選擇使用該索引。相反,優化器可能

會選擇索引的快速全域性掃瞄或全表掃瞄。

如果在where 子句中使用索引的第三列,也會產生相同的情況:

select job, empno

from emp

where deptno = 30;

在該程式清單中,where 子 句指定了索引中第三列的值。優化器可能選擇執行索引快速掃瞄訪問、索

引快速全域性掃瞄或全表掃瞄。通過建立索引,您可以在執行查詢時為資料庫提供更多的選 擇。從而有希望

改進整體的效能。注意,使用者的**沒有改變,優化器可以識別該索引,並且根據每種替代方法的預期成

本決定使用何種方法。

在下面的示例中,使用了索引的一部分。將第一列empno 用作where 子句中的限制條件,以便oracle

可以使用該索引。

select job, empno

from emp

where empno = 'rich';

兩種最常見的索引掃瞄型別是唯一掃瞄和範圍掃瞄。在唯一掃瞄中,資料庫知道索引包含乙個唯一值

列表。在範圍掃瞄中,資料庫將根據查詢標準從索引中返回多個值。在該示例中,emp_id1 和emp_id2 索

引沒有被建立為唯一索引。oracle 將在檢索它們的值時執行範圍掃瞄。在建立索引時,使用create unique

index 命令可以建立唯一索引。

更多資訊請看

讀書筆記 效能調優

1.通常使用synchronized關鍵字同步 可讀性好,如果涉及效能問題,可以使用顯式的lock物件 2.免鎖容器 通用策略 對容器的修改可以與讀取操作同時發生,只要讀取者只能看到完成修改的結果即可。修改是在容器資料結構的某個部分的乙個單獨的副本上執行的,並且這個副本在修改過程中不可視。只有當完成...

大話java效能調優讀書筆記

序 最大的思想紊亂是相信人們想要相信的事情.1 調優方法,調優方向 調優層次 2導致系統瓶頸的計算資源 cpu 記憶體,磁碟io,網路傳送,資料庫,鎖競爭,異常等 磁碟io讀寫速度比記憶體慢很多,由於網路的不確定性,可能網路的操作速度比磁碟i o更慢 資料庫中的連線數量,讀寫速度,資料合併,海量資料...

oracle調優筆記

在sqlplus中輸入 desc v libraycache v sgastat v sql v sqlarea v sqltext v db object cache select from v librarycache col namespace format a10 設定格式長度 查詢執行次數...