調整 Java 程式使用 PreparedStatement,先執行 DBCC FREEPROCCACHE 清除快取:
String sql = "SELECT * FROM SalesOrderHeader WHERE SalesOrderID = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
for (int id : ids) {
pstmt.setInt(1, id);
ResultSet rs = pstmt.executeQuery();
}
再次查詢 DMV,發現單一參數化計畫被重用 20 次(usecounts = 20),有效節省記憶體與 CPU。
減少多餘計畫釋放共享記憶體池空間,讓資料快取與索引頁面獲得更多記憶體,提升整體效能。
無論選擇參數化查詢或預存程序,核心原則都是確保查詢計畫可重用,避免記憶體與 CPU 浪費。