前言

  • 針對索引列,尤其是存在嚴重數(shù)據(jù)傾斜的索引列,直方圖的統(tǒng)計信息,對于CBO優(yōu)化器更準確地選擇執(zhí)行計劃至關重要。
  • 對于初心者,可以從這篇文章中,了解到直方圖對于索引列的價值、作用,以及使用技巧。
  • 對于經(jīng)驗者,同樣可以從文章中,了解到不同的analyze table操作,對于直方圖信息統(tǒng)計的影響。該部分也可以直接查閱本篇文章最后的總結篇。
  • 先強調(diào)一句:analyze table table_name compute statistics這個操作要謹慎

 

1、直方圖概述

  • 直方圖作為一種計量數(shù)據(jù)分布的統(tǒng)計工具,并非ORACLE專有。
  • 對于ORACLE而言,直方圖主要用于在分析表以及索引時,統(tǒng)計相關列上的數(shù)據(jù),記錄該列整體的數(shù)據(jù)分布情況。

 

 

2、直方圖的分類

  • ORACLE的直方圖主要有兩種,等頻直方圖以及等高直方圖
  • 默認情況下,當列上的唯一值數(shù)量低于254個,ORACLE會建立等頻直方圖。
  • 默認情況下,當列上的唯一值數(shù)量高于254個,ORACLE會建立等高直方圖。
  • 可以在執(zhí)行dbms_stats.gather_table_stats收集統(tǒng)計信息時,通過method_opt參數(shù),設置SIZE低于目標列的唯一值數(shù)量,從而使用等高直方圖。

 

 

3、直方圖的優(yōu)勢

對于ORACLE而言,CBO優(yōu)化器可以根據(jù)直方圖收集的列值分布信息,讓選擇性高(返回數(shù)據(jù)行比例少)的列值使用索引,而選擇性低(返回數(shù)據(jù)行比例多)的列值不使用索引。尤其對于存在數(shù)據(jù)傾斜嚴重的列而言,直方圖很重要。

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式