oracle中,對於同乙個查詢語句,有時候會很快的完成,有時候卻很慢,但是表結構什麼的完全一致,表中的資料也完全一致,這個具體是什麼願意呢,就要從index中的細節說起了。
在oracle中的乙個特殊的檢視user_indexes中有乙個特殊的列,名字是clustering_factor,這個值的內容就是如果訪問表的整個表資料,會造成多少次資料庫io。我們可以通過下面的sql語句來檢視。
select
a.index_name,
b.num_rows,
b.blocks,
b.clustering_factor
from
user_indexes a,
user_tables b
where
a.index_name =?
anda.table_name
=b.table_name
在這個sql語句中,?代表的就是我們要檢索的index的名稱。在表中資料有時候屬於無序狀態,這個時候的clustering_factor比較接近num_rows,說明如果掃瞄整個表,每次都要根據index來讀取相應行的rowid,這個時候的io操作很多,自然檢索時間會比較長。如果資料有序的話,clustering_factor比較接近blocks,說明相鄰的資料在乙個塊中,減少了io運算元量,自然檢索時間會大大降低。
Oracle 聚簇因子概念及實驗
oracle 聚簇因子 oracle中,對於同乙個查詢語句,有時候會很快的完成,有時候卻很慢,但是表結構什麼的完全一致,表中的資料也完全一致,這個具體是什麼原因呢,就要從index中的細節說起了。在oracle中的乙個特殊的檢視user indexes中有乙個特殊的列,名字是clustering f...
oracle聚簇索引
很多初學者,在接觸oracle資料庫後,都會很疑惑oracle聚簇索引是什麼,如何使用oracle聚簇索引,oracle雜湊聚簇又與oracle聚簇索引有什麼關係。本文針對這3個問題結合相關資料,給出了點看法。1.什麼是聚簇 聚簇是根據碼值找到資料的物理儲存位置,從而達到快速檢索資料的目的。orac...
聚簇因子使用教程和演算法
聚簇因子 clusteringfactor 用來描述乙個表中的列是否是規則排序的。它的演算法如下 我們知道可以通過dbms rowid.rowid block number rowid 找到記錄對應的block 號。索引中記錄了rowid,因此oracle 就可以根據索引中的rowid來判斷記錄是否...