資料庫模型設計優劣直接決定系統性能。本文基於多年 Sybase/SQL Server 實戰經驗,總結四大核心設計原則:游標優化、索引技巧、一致性與冗餘平衡、事務陷阱規避。
某住房公積金系統,10萬賬戶日終計息,游標循環預估 48 小時(Alpha/4000 128MB RAM, Sybase 11.0)。
-- 反模式:游標逐行
DECLARE Mycursor CURSOR FOR SELECT count_no FROM COUNT
OPEN Mycursor
FETCH Mycursor INTO @vcount_no
WHILE (@@sqlstatus = 0)
BEGIN
IF @vcount_no = '條件1' 操作1
IF @vcount_no = '條件2' 操作2
FETCH Mycursor INTO @vcount_no
END
-- 優化:單條 UPDATE 替代游標
UPDATE COUNT SET 操作1 WHERE 條件1
UPDATE COUNT SET 操作2 WHERE 條件2
-- 耗時從 48h 降至 20 分鐘
某電信收費系統,3萬行中僅 30 行符合條件,先導入臨時表再開游標,性能顯著提升(PII 266 64MB RAM, SQL Server 6.5)。
CREATE TABLE #tmp (字段1, 字段2, ...)
INSERT INTO #tmp SELECT * FROM TOTAL WHERE 條件
DECLARE Mycursor CURSOR FOR SELECT * FROM #tmp
-- 對臨時表操作,而非大表
IDENTITY 列作 PK 關聯子表(業務鍵更穩定)CHECK 約束替代 RULE(約束驗證更快)BEGIN TRAN / COMMIT TRAN / ROLLBACK TRAN@@TRANCOUNT 返回嵌套層級ROLLBACK 會回滾到最外層 BEGIN TRAN,非僅回滾內層SAVE TRANSACTION 做部分回滾點設計無銀彈,**基於真實負載特徵的權衡**才是良師益友。