Oracle中Select語句的特性

Select語句會對錶中的數據進行一次掃描,但是究竟掃描多少數據存儲塊呢,這個並不是說數據庫中有多少數據,Oracle就掃描這麼大的數據塊,而是Oracle會掃描高水位線以下的數據塊。現在來想象一下,如果剛纔是一張剛剛建立的空表,你進行了一次Select操作,那麼由於高水位線HWM在最低的0位置上,所以沒有數據塊需要被掃描,掃描時間會極短。而如果這個時候你首先插入了一千萬條數據,然後再用delete語句刪除這一千萬條數據。由於插入了一千萬條數據,所以這個時候的高水位線就在一千萬條數據這裏。後來刪除這一千萬條數據的時候,由於delete語句不影響高水位線,所以高水位線依然在一千萬條數據這裏。這個時候再一次用select語句進行掃描,雖然這個時候表中沒有數據,但是由於掃描是按照高水位線來的,所以需要把一千萬條數據的存儲空間都要掃描一次,也就是說這次掃描所需要的時間和掃描一千萬條數據所需要的時間是一樣多的。所以有時候有人總是經常說,怎麼我的表中沒有幾條數據,但是還是這麼慢呢,這個時候其實奧祕就是這裏的高水位線了。

 

全表掃描將始終讀取一個段(extent)中所有低於高水位線標記的塊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章