SQL Server (T-SQL) 擁有大量專有語法與優化規則。本文匯總 14 類特殊語法 (加密、分頁、校驗和、元數據查詢、殺進程、重命名等) 與 4 大維度優化原則 (索引、游標、抽取上載、模式優化),附反模式對比表,作為 T-SQL 開發速查手冊。
| 場景 | 語法/函數 | 示例 |
| 按拼音/筆畫排序 | COLLATE Chinese_PRC_Stroke_CI_AS | SELECT * FROM T ORDER BY Name COLLATE Chinese_PRC_Stroke_CI_AS |
| 密碼加密/比較 | PWDENCRYPT(), PWDCOMPARE() | SELECT PWDCOMPARE('plain', pwd_hash) = 1 |
| 動態獲取表列 | sys.columns + 動態 SQL | 見代碼片段 |
| 查看磁盤分區空間 | EXEC master..xp_fixeddrives | 返回 驅動器、可用 MB |
| 比較兩表數據一致性 | CHECKSUM_AGG(BINARY_CHECKSUM(*)) | IF (SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM A) = (SELECT ... FROM B) PRINT '相等' |
| 殺掉 Profiler 進程 | 游標遍歷 sysprocesses + KILL | 見代碼片段 |
| 分頁查詢 (舊版) | TOP N + 子查詢排除 | SELECT TOP 10 * FROM T WHERE ID NOT IN (SELECT TOP 20 ID FROM T) |
| 分頁查詢 (2012+) | OFFSET ... ROWS FETCH NEXT ... ROWS ONLY | SELECT * FROM T ORDER BY ID OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY |
| 重命名數據庫 | sp_renamedb 'old', 'new' | 需單用戶模式 |
| 獲取所有用戶表 | SELECT name FROM sysobjects WHERE xtype='U' AND status>=0 | 或 sys.tables |
| 獲取表所有列 | SELECT name FROM syscolumns WHERE id=OBJECT_ID('tbl') | 或 sys.columns |
| 查看表相關對象 (視圖/SP/函數) | sysobjects JOIN syscomments | WHERE b.text LIKE '%tbl%' |
| 查看所有存儲過程 | SELECT name FROM sysobjects WHERE xtype='P' | 或 sys.procedures |
| 查看用戶創建的庫 (排除 sa) | SELECT * FROM master..sysdatabases WHERE sid <> 0x01 | 或 sid NOT IN (SELECT sid FROM master..syslogins WHERE name='sa') |
| 查詢表列與數據類型 | INFORMATION_SCHEMA.COLUMNS | SELECT column_name, data_type FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='tbl' |