T-SQL (Transact-SQL) 是微軟在 Sybase 基礎上擴展的結構化查詢語言,並非獨立程式語言,必須經由 SQL Server 資料引擎解析、編譯、執行。理解這三大階段的運作機制,有助於撰寫高效率程式碼並善用執行計畫快取。

圖一:SQL Server 關係引擎架構示意 (左側為解析/編譯/優化,右側為執行組件)
編譯完成的執行計畫駐留於程序快取。後續相同請求優先尋找匹配計畫,命中則直接執行,否則重新解析編譯。快取管理由 惰性寫入器 負責:每個計畫擁有「編譯成本因子」(視複雜度賦值),每次被引用「年齡」遞增該因子;惰性寫入器定期掃描將年齡遞減,歸零則回收記憶體。記憶體壓力大時亦會淘汰低成本計畫。
SELECT * FROM PUBS.DBO.SALES)。因此 SELECT * 因文本固定較易重用,而 SELECT col1, col2... 因欄位列表常異而難重用。
sp_recompile 或 sp_compile (針對資料表,可批量重編譯引用該表的所有程序/觸發器)。最佳實務:重建索引或更新統計後,務必重新編譯相關預存程序;生產環境最穩妥的方式是重啟 MSSQLSERVER 服務 (或執行 DBCC FREEPROCCACHE),確保所有計畫刷新。