DB2 開發技巧完整目錄
系統整理存儲過程、臨時表、游標、常用函數替代、IDENTITY、空值處理、影響列數、結果集回傳、型別轉換、SP 互呼、C SP 參數、FENCED/UNFENCED、錯誤處理、IMPORT/VALUES、隔離等級、ATOMIC、效能調優 (大量導入/複雜 SQL/SP 選擇/HASH JOIN/RR_TO_RS/避免 COUNT(*)/EXISTS)、系統管理 (安裝/建庫/遠端配置/實例控制/連線監控/配置調整/環境變數/隔離等級/升級/死鎖分析) 等 30+ 核心主題。
重點技巧快速索引
- CREATE PROCEDURE 後禁用 TAB,只能用空格
- 臨時表:需 USER TEMPORARY TABLESPACE,Session 級有效,多線程慎用,建議
WITH REPLACE
- FETCH FIRST n ROWS ONLY 不支援 SELECT INTO,改用游標
- 游標兩種寫法:傳統 WHILE 迴圈 (支援 WITH HOLD) vs FOR 迴圈 (簡潔但不支援 HOLD/COMMIT)
- WHERE CURRENT OF 更新游標當前列,需
FOR UPDATE
- CASE WHEN 替代 DECODE、LOCATE 替代 CHARINDEX、DAYS 差值計算日期天數
- IDENTITY:
GENERATED ALWAYS AS IDENTITY (START WITH ..., INCREMENT BY ...)
- COALESCE 多參數空值防護,優於 ISNULL
- GET DIAGNOSTICS ROW_COUNT 取得影響列數
- RESULT SETS + WITH RETURN TO CALLER 回傳結果集
- CAST 型別轉換、VALUES 合併多重 SET、WITH UR 指定隔離等級
- ATOMIC 區塊原子性,類似交易
- 大量資料:EXPORT + LOAD 優於 SELECT INTO (LOAD 不寫日誌)
- 複雜 SQL 績優:DB2 優化器強,減少 SQL 陳述式個數
- SQL SP vs C SP:邏輯複雜用 C,SQL 複雜用 SQL SP
- db2set DB2_HASH_JOIN=Y、db2set DB2_RR_TO_RS=Y 效能提升
- 避免 COUNT(*)/EXISTS:改用 SELECT INTO + CONTINUE HANDLER FOR NOT FOUND/EXCEPTION
後續章節將逐節展開程式碼範例與進階用法。