常用的兩種資料分割槽方法 以Teradata為例

2021-09-04 09:09:33 字數 1124 閱讀 8151

海量資料效能優化的乙個基本的原則就是「分割槽」(也有叫「分片」的)。分割槽思想其實就是日常工作生活中的抽屜原理:我們把自己的物品按照某種邏輯歸置到多個小抽屜中,一般會比混在乙個大抽屜中好找;但是小抽屜太多了、或者邏輯混亂了,也可能效果適得其反。

teradata的分割槽語法較為簡潔,其中常用的是按時間分割槽,如下例只要新增到create table語句末尾就可以實現2023年全年一天乙個分割槽了(為了省事,可以一次分5-10年)

partition by range_n(  

rcd_dt between 

date 

'2013-01-01' 

and 

date 

'2013-12-31'

each interval '1' 

day, no range

另外乙個常用(但是不容易掌握)的是按字串取值分割槽。在上述按時間分割槽中我們可以看到range_n關鍵字。按值分割槽採用case_n關鍵字,如下例所示:

partition by case_n(   

(case 

when (my_field='a') then (1) else (0) end)=1,    

(case 

when (my_field='b') then (2) else (0) end)=2,    

(case 

when (my_field='c') then (3) else (0) end)=3,    

no case 

or unknown);

更進一步,其中如下面的語法元素:

my_field='a'

可以修改為類似於這樣的形式:

substr(my_field,1,1) in ('e','f','g') 

在現實中,因為訪問資料從全表掃瞄變成了分割槽掃瞄的原因,某些步驟可以達成10-100倍的效能提公升。對於複雜的耗時較長的大作業,也總是能夠縮短一半以上的執行時間。非常有意思的現象是,即使是經驗豐富的開發人員,對資料分割槽的掌握也不一定很好。資料分割槽理念是超越具體資料庫的,無論是teradata還是別的什麼資料庫,在我過去將近十年的職業生涯中,大多數效能問題都可以通過資料分割槽得以妥善解決。

Java中比較常用的兩種資料轉化

1 由基本資料型別轉換成string string 類別中已經提供了將基本資料型態轉換成 string 的 static 方法 也就是 string.valueof 這個引數多載的方法 string.valueof double d 將 double轉換成字串 string.valueof floa...

asp 操作兩種資料庫的方法

using system using system.collections.generic using system.linq using system.web using system.web.ui using system.web.ui.webcontrols using system.data...

兩種陣列去重的方法

1 this的用法 思路 構建乙個空陣列存放結構 構建乙個空物件,巧妙之處 將取得的原陣列的值設為物件的屬性,並設定其值為乙個數值,for迴圈時,如果該值存在則 json this i 為false,array.prototype.unique3 function for var i 0 i thi...