Quote: |
1. 對一張表建立了分區後,在訪問表中資料時是如何操作的。 |
|
answer:
普通表呢像一個小學生用的新華字典,分區表呢像一套博士們辭海,在同一個漂亮的盒子裡面(表名)有若干本辭海分冊(每一冊就是一個分區了)。
如果說檢索一張普通表就像查新化字典,檢索分區表就像查辭海了。具體而言呢,又這麼幾種方式:
1). 因為你知道你查的內容只會出現在某些分冊裡面,於是你很快的從辭海盒子裡面取出你要的那個冊子,不加思索的翻到索引頁,根據索引頁的指示,你飛快的翻到你的目標頁面。取一本本冊子呢就叫partition range [inlist] iterator,找索引頁當然就是index range scan。如果你不找索引頁,準備翻完整本書的找,那就是full table scan了。如果你只找一本冊子的,那partition range iterator也就不必了。
2). 哦,你不知道你要查的內容在那本冊子裡? 那你只好辛苦一點,翻閱所有冊子了。這時,你做的動作就叫partition range all. 而對於每本冊子言,也許你會找索引頁(index scan),也許你想翻遍全冊(full table scan)。
3). 也許你發現一冊冊的開啟索引頁找內容太繁重了,你突然想起來對你的辭海做個整改。於是你把每冊的索引頁全都拆了下來,專門裝訂成一冊。每次你想利用索引頁找東西時,你就開啟這個索引冊。從索引冊,你就可以找到你要內容在哪一冊哪個地方。這就是global index scan. 相對於1,2,就叫local index scan.
4). 你有兒子嗎?有一天,你想培訓兒子的能力,於是你就找來你兒子給你翻冊子,找資料。可是你兒子非得和老子一起找才肯幫你。於是你們父子倆就開始一起檢索起辭海來,你查某些冊子,他查另一些冊子。這就叫partition scan.
Quote: |
2. 如果建立了分區後,在一個查詢中又沒用到分區時的條件時,他的操作和沒用分區時的操作有何不同?
|
|
有不同,成本會高一點。 前者是partition range all, 必須一本冊子一本冊子查過了, 後者就查一個冊子了。但是前者並不定會比後者慢,因為前都可以用partition scan.