這是與問題here有關的問題,我的問題是來自Java應用程序的視角。 如何優化查詢數據庫,如果我有一個web服務從數據庫返回數據取決於客戶端允許獲取什麼?從JDBC SQL中省略列SELECT選擇過早優化?
- 在Java代碼中使用最大的一組列和過濾器值進行選擇是否合理?
- 或者是更好地構建許多SQL PreparedStatements/NativeQueries,每個只會詢問將真正返回的列嗎?
- 是一個很好的折衷方案來構造基本查詢只由連接的表而不是選定的列確定(這些都是)?
對於數據庫和可維護應用程序都有什麼好處?我現在所知道的:
- 大多數JDBC驅動程序/ SQL數據庫優化SQL查詢並緩存未來請求的優化版本。每一個新的查詢都必須進行分析和比較,必須找到或創建優化版本......並保存在內存中......最壞的情況下,每個新變種都會生成新的優化版本。將這些簡單選擇相同的優化版本?
select name, surname from person
select name from person
- 寫選擇的多種變體是醜陋的 - 每一個變種都必須經過測試,維護,快...