執行計畫總結

2021-09-06 23:41:52 字數 1229 閱讀 2709

oracle訪問資料的訪問方法  :

1)全表掃瞄(full table scans, fts)

2)通過rowid的表訪問(table access by rowid或rowid lookup)

3)索引掃瞄(index scan或index lookup)有4種型別的索引掃瞄:

(1) 索引唯一掃瞄(index unique scan)

(2) 索引範圍掃瞄(index range scan)

在非唯一索引上都使用索引範圍掃瞄。使用index rang scan的3種情況:

(a) 在唯一索引列上使用了range操作符(> < <> >= <= between)

(實際測試只有用"="的時候才是用的index range scan,其他的走的是全表掃瞄)

(b) 在組合索引上,只使用部分列進行查詢,導致查詢出多行

(c)對非唯一索引列上進行的任何查詢。

注:如果條件只能夠使用 yyy like '%***%'這種用法,則是全表掃瞄,哪怕yyy是乙個索引。 

(3) 索引全掃瞄(index full scan)

(4) 索引快速掃瞄(index fast full scan)

1.全表掃瞄(table access full)的情況:

a.where條件中如果有like,那麼無論like後的字段是否加了索引或者是否有unique約束,都會有是全表掃瞄。這種情況消耗的io比較高,一般都好幾千以上。

b.沒有where條件,這種情況肯定是全表查詢。

2.通過rowid的表訪問(table access by rowid

首先需要理解下索引。因為通過所以索引查詢的時候,實際上是先通過查詢索引對應的rowid,然後再通過rowid來查詢具體的行。

由此查詢時如果走索引的實際上全都會走 table access by rowid;

3.索引掃瞄

a.索引唯一掃瞄(index unique scan)

查詢條件中 如xx=1234, 如果xx是主鍵或者唯一性約束所在列,則走index unique scan

b.索引範圍掃瞄(index range scan)

Hive On Spark執行計畫總結

1 hive on spark explain statement 在hive中,命令explain可以用來檢視查詢的執行計畫。對於hive on spark,這個命令本身不會改變,還會表現的和以前一樣。它仍然會顯示依賴語法樹和每個stage階段的執行計畫。然後,如果hive.execution.e...

執行計畫小總結

工作中偶爾會遇到效能不好的複雜sql語句,在定位不了問題的情況下就需要執行計畫出馬了。執行計畫顧名思義,就是oracle內部執行sql語句的詳細計畫步驟。當然,其他資料庫比如mysql sqlsever等也有這個概念。本文以我常用的oracle為例。如可檢視執行計畫?其實有很多種方法。最簡單的,用i...

執行計畫小總結

工作中偶爾會遇到效能不好的複雜sql語句,在定位不了問題的情況下就需要執行計畫出馬了。執行計畫顧名思義,就是oracle內部執行sql語句的詳細計畫步驟。當然,其他資料庫比如mysql sqlsever等也有這個概念。本文以我常用的oracle為例。如可檢視執行計畫?其實有很多種方法。最簡單的,用i...