首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 技巧:WHERE 1=1 慣用法與 COUNT(1) vs COUNT(*) 效能解析

     編輯:關於SqlServer

WHERE 1=1 的妙用

WHERE 1=1 在邏輯上永真,不影響查詢結果,但在動態建構 SQL 字串時極為實用:

String sql = "SELECT * FROM table1 WHERE 1=1";
if (!name.isEmpty())  sql += " AND name = '" + name + "'";
if (!age.isEmpty())   sql += " AND age = " + age;
if (!height.isEmpty()) sql += " AND height = " + height;

無需判斷是否為第一個條件而決定加 WHERE 還是 AND,程式碼更簡潔、不易出錯。同理 1<>2、'a'='a' 等同樣效果。

COUNT(1) 與 COUNT(*) 效能差異

情境建議說明
無主鍵COUNT(1) 較快掃描單一常數列比掃描全列輕量
有主鍵(單欄或複合)COUNT(主鍵欄位) 最快利用叢集索引葉層計數,避免全表掃描
單一欄位表COUNT(*) 最快優化器自動選擇最小索引

現代優化器會自動將 COUNT(*) 轉換為最有效率的計數方式(通常掃描最窄的非叢集索引或叢集索引),差異極微。實務上建議直接使用 COUNT(*),語意清晰且相容性最好。

總結

  • WHERE 1=1 是動態 SQL 建構的最佳實踐,非效能優化手段。
  • COUNT(*) 為標準寫法,優化器會自動處理,無需手動指定 COUNT(1) 或 COUNT(pk)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved