Oracle 計算欄位選擇性 判別列的索引潛力

raysuen發表於2019-04-11

        今天面試被面試官問如何判斷列的可選性,以前我都是根據業務或同開發的同事溝通得出此列可選性。

        也可能透過直接查詢的方式獲取,當然這個方法並不好。

        這個問題確實是我以前忽略的。

        以此轉載他人文章,解決這個問題。

select a.owner, a.table_name, a.column_name,
       b.num_rows, a.num_distinct Cardinality,
       round(a.num_distinct / decode(b.num_rows, 0, 1, b.num_rows) * 100, 2) selectivity
  from dba_tab_col_statistics a, dba_tables b
 where a.owner = b.owner
   and a.table_name = b.table_name
   and a.owner = upper('XXX')
   and a.table_name = upper('XXX')
   and a.column_name = upper('XXX');
-- 列值 selectivity 越接近100,選擇性越好,該列建立索引的潛力就越大
-- 原理是根據統計資訊檢視錶對應列的非重複記錄所佔的比例
--------------------- 
作者:VincentQB 
來源:CSDN 
原文:https://blog.csdn.net/zwjzqqb/article/details/80713114 
版權宣告:本文為博主原創文章,轉載請附上博文連結!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28572479/viewspace-2641110/,如需轉載,請註明出處,否則將追究法律責任。

相關文章