我有二十年的SQL經驗,但沒有專門與Oracle。一個「甲骨文專家」向我保證,建立一個SQL查詢,而無需參數(像這樣):Oracle Perfomance - JDBC Oracle Thin驅動程序:是否使用參數?
SELECT t.ID, t.Name, t.Address ... FROM Table1 t WHERE t.ID = 'someID' AND t.Name = 'someName'...
至少是儘可能快地使用
SELECT t.ID, t.Name, t.Address ... FROM Table1 t WHERE t.ID = ? AND t.Name = ?
的代碼中執行參數(像這樣)一個循環。
在大多數其他數據庫我有經驗,使用參數提高速度。它允許數據庫緩存與SQL語句相匹配的編譯計劃。由於SQL不會在每次調用時發生更改(儘管這些參數會這樣做),因此可以提高性能。數據庫只是綁定參數並繼續。
'Oracle專家'聲明這不是必需的。但顯然,Oracle需要「解析」參數,將剩餘的字符串與緩存的執行計劃匹配,然後重新綁定參數,就好像它們首先作爲參數傳遞一樣。
我在這裏有正確的心理照片嗎? Oracle有什麼「神奇」的東西,它確實對我們如何處理參數傳遞/ SQL構建策略沒有影響?
有沒有關於Java/JDBC/Oracle瘦驅動程序的想法,我不知道我應該知道這裏?
我正在尋找要麼加強我的理解,要麼擴大我的知識。 (請注意安全問題,我知道構建SQL字符串可以進行SQL注入攻擊,我正在尋找更直接的彈藥來對付專家意見 - 如果存在的話)。
其他詳情:Oracle 11gR2, Java 1.6
;) - 對我來說,SQL注入就足夠了。感謝您幫助我構建案例。 – cmdematos