負責 SQL Server 專案的開發者,往往面臨資料庫效能挑戰。本文不提供速成技巧,而是針對常見設計錯誤提出經驗總結,幫助建立良好的資料庫設計習慣。
不必死記所有指令,但應花時間瀏覽完整 T-SQL 指令集。當設計查詢時,能回想起「有個指令能解決這個問題」,再查閱 MSDN 確認語法即可。
游標是效能殺手:佔用記憶體、鎖定資料表、執行緩慢。每次 FETCH 相當於一次 SELECT,萬筆資料即執行萬次 SELECT。集合式操作(單一 SELECT/UPDATE/DELETE)效率高出數量級。實例證實:10萬筆資料,游標存儲程序耗時 40 分鐘,改寫為集合式僅需 10 秒。
反正規化常因「效能」或「偷懶」而為之,但 DBMS 設計初衷即為處理正規化資料。盲目反正規化往往適得其反,應遵循正規化原則設計。
明確指定欄位可:減少記憶體與頻寬消耗、提升安全性、讓查詢優化器利用覆蓋索引。
索引加速 SELECT 但拖慢 INSERT/DELETE。關鍵在於分析資料表的主要操作類型(讀多寫少?寫多讀少?),再決定索引策略。
「性別」等僅有少數幾種值的欄位,索引選擇率極低,維護成本卻高。複合索引欄位順序應依基數由高至低排列(如:姓名+縣市+性別)。
交易確保資料一致性,是資料庫操作的基本保障。