2015年3月20日 星期五

[DB] Teradata SQL最佳化教學(三)-- Reducing Table Update Time

這是系列文的最後一篇文章,介紹怎樣減少更新資料表的時間.根據上面的文章,如果基本的資料分散有做好的話,要加快資料查詢速度,要不就要浪費硬碟容量(產生非正規劃的資料表),或是將時間轉移到更新時間上,這時候需要去抉擇到底要犧牲哪部分.

1) 若要減少資料表更新的時間,可以先捨棄表格的index再執行更新.更新完後再重新建立index,並重新計算表格的統計資料.當資料量較大的表格需要更新時(一個大型表格中的5%),會獲得最佳的效果.

2) 試著避免丟棄(DROP)表格,而採用刪除(DELETE)(譯者注:我實務上沒用過DELETE).跟TABLE相關的SQL語句(像是CREATE TABLE, DROP TABLE)是單線程的指令,可能造成效率瓶頸,也有可能造成字典表格的鎖死(deadlocks).同時,當一個使用者被授權使用一個已經被DROP的資料表,需要重新產生授權.