首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL Server存儲過程優化與編寫規範(一):SQL寫法、索引與事務控制

     編輯:MySQL 資料庫相關知識

背景

複雜業務邏輯封裝於存儲過程(SP),無規範導致維護難、大SP難讀、性能差。優化後SP效率可達未優化數百倍。

開發規範

  1. 跨庫引用必建View:禁用database.dbo.table直連,sp_depends無法追蹤依賴
  2. 提交前必跑SET SHOWPLAN ON:分析查詢計劃,自查優化

SQL寫法優化要點

  • 避免大事務、慎用HOLDLOCK:提升併發
  • 減少重複訪問大表:先按條件導入臨時表再連接
  • 盡量不用游標:>1萬行必改寫;用游標避免循環中再連表
  • WHERE條件順序:按索引順序、選擇性從高到低排列
  • WHERE左邊禁運算:col+1=@val導致索引失效,改col=@val-1
  • 存在性判斷用EXISTS:替代SELECT COUNT(1);COUNT(1)優於COUNT(*)
  • 優先>=不用>:邊界包含利於索引求區間
  • OR/UNION互換評估:視索引情況選擇
  • 連接欄位類型一致:隱式轉換殺索引
  • 參數類型與表欄位對齊
  • 單次INSERT/UPDATE超200頁(400KB)觸發鎖升級:頁鎖→表鎖,拆批次

索引規範

  • 大OLTP表索引≤6個,結合業務建立
  • 優先用索引列作查詢條件,尤其聚簇索引
  • 必要時INDEX(index_name)強制指定

核心理念

「規範先行、計劃驗證、小事務、無游標、索引對齊、類型一致、拆大批次。」
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved