理解oracle索引掃描類型的特點以及具體觸發(fā)的條件,對于通過合理地使用索引,進行sql優(yōu)化至關重要(例如組合索引的引導列的選擇問題)。

在總結索引掃描類型前,需要再次強調(diào)關于索引特點的幾個關鍵點:

  • 對于單一列建立的索引,既單一列索引,b-tree中不保存索引列的null值信息
  • 對于多個列建立的索引,既組合列索引,b-tree中會連同其他非null值列,保留該列null值記錄;對于一條記錄中,組合索引全部列都是null值,組合索引中不會記錄(從之前的實驗看,此時的執(zhí)行計劃是全表掃描)
  • 創(chuàng)建主鍵約束以及唯一鍵約束,或自動創(chuàng)建唯一索引
  • create index創(chuàng)建的索引屬于普通索引(非唯一索引)
  • create unique index創(chuàng)建的索引屬于唯一索引

其他的一些特點,可參閱前面的幾篇總結。

此外,為避免概念的混淆,再次說明一下:“索引類型”主要探討的是索引的幾種類別的問題,而“索引掃描類型”主要探討的是索引掃描的幾種具體實現(xiàn)方法的問題。

 

 

1、索引掃描類型概述

Oracle提供了五種索引掃描類型,根據(jù)具體索引類型、數(shù)據(jù)分布、約束條件以及where限制的不同進行選擇: 

  • 索引唯一掃描(index unique scan)
  • 索引范圍掃描(index range scan)
  • 索引跳躍掃描(index skip scan)
  • 索引全掃描(index full scan)
  • 索引快速掃描(index fast full scan)

 

 

2、索引唯一掃描(index unique scan) 

索引唯一掃描,僅僅針對唯一索引的掃描,且僅適

網(wǎng)友評論