sp_lock/sp_who 顯示讀寫爭用sp_spaceuse 監控表大小,縮小掃描範圍max server memory 設 1.5x 物理LIKE 'a%' 走索引,LIKE '%a' 掃描;長字串用 VARCHAR + 全文索引DBCC REINDEX、DBCC INDEXDEFRAG;收縮 DBCC SHRINKDB/FILE;大庫關閉自動增長BEGIN TRAN ... COMMIT,勿內嵌WHILE、臨時表、Table 變數、子查詢、CASEREAD_ONLY 最輕量、OPTIMISTIC 衝突少、SCROLL_LOCKS 悲觀需在事務中開啟UNION ALL > UNION (無去重開銷)DISTINCT/ORDER BY:客戶端排序/去重SET QUERY_GOVERNOR_COST_LIMIT / SET ROWCOUNT 限制資源/行數IS NULL、<>、!=、NOT、NOT IN、NOT EXISTS、LIKE '%...'、欄位上加函數 → 改用計算欄位+索引FROM Table WITH (INDEX=IdxName)MIN/MAX 可走索引BETWEEN 有時快於 IN (範圍掃描 vs 多點查找)OR 拆分為多查詢 UNION ALL,嘗試匹配索引DISTINCT/ORDER BY 下推客戶端IN 清單把高頻值放前面SELECT INTO 鎖系統表 → 禁止在事務中使用;改 CREATE TABLE + INSERTGROUP BY/HAVING 前在 WHERE 過濾;單純分組用 DISTINCT 更快EXISTS > COUNT(*) (存在性判斷)max worker threads = max connections + 5;否則啟用執行緒池Memory: Pages/sec、Processor: % Time、PhysicalDisk: Queue Length、SQLServer: Cache Hit RatioWHERE FloatCol = 3000 → 應寫 3000.0A=B, B=@id, A=@id 讓優化器更早過濾IDENTITY + TOP,配合索引順序