SQL Server 查詢效能不佳的成因眾多,以下整理十大常見原因與對應優化策略:
sp_lock、sp_who、活動使用者查看)將資料、記錄檔、索引放置於不同 I/O 裝置,提升讀取速度。資料量越大,I/O 優化越關鍵。
利用 sp_spaceuse 分析,將大表拆分縮小尺寸。
擴充記憶體(Win2000/SQL2000 支援 4-8GB)、提升網速、增加 CPU 核心數。注意:平行處理比序列處理更耗資源(如記憶體),SQL Server 會依負載自動決定平行度。複雜、高 CPU 耗用的查詢適合平行處理,但 UPDATE/INSERT/DELETE 目前無法平行化。
max server memory 設為虛擬記憶體一半(即實體記憶體 1.5 倍)LIKE 'a%' 可使用索引LIKE '%a'、LIKE '%a%' 無法使用索引VARCHAR 而非 CHAR,並考慮全文索引DB Server 與 Application Server 分離;OLTP 與 OLAP 分離。
實現資料庫伺服器聯盟,支援大型多層 Web 站點擴展。需先水平分割資料表,再於各成員伺服器建立同名分散式分割檢視表。
DBCC REINDEX、DBCC INDEXDEFRAGDBCC SHRINKDB、DBCC SHRINKFILECASE 陳述式等集合式操作READ_ONLY、OPTIMISTIC WITH VALUES 等COMMIT 提交目前交易,ROLLBACK 回滾所有交易;動態 SQL 中建議於外層控制交易WHERE 子句限制回傳列數,避免全表掃描造成鎖定與 I/O 浪費掌握上述原則,並配合實際執行計畫分析,即能大幅提升 SQL Server 查詢效能。