私は 20 年の SQL の経験がありますが、特に Oracle ではありません。「Oracle の専門家」は、パラメーターなしで SQL クエリを作成することを保証します (次のように)。
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 はパラメーターを「解析」し、残りの文字列をキャッシュされた実行計画に一致させてから、最初にパラメーターとして渡されたかのようにパラメーターを再バインドする必要があります。
ここで正しい心像を持っていますか?パラメータの受け渡し/SQL構築戦略にどのようにアプローチするかが実際に違いを生まないという、Oracleについての「魔法のような」ものはありますか?
Java / JDBC / Oracle シン ドライバーについて、私が気付いていない、ここで知っておくべき考えはありますか?
理解を深めるか、知識を広げたいと思っています。
(セキュリティ上の懸念はさておき、SQL 文字列を作成すると SQL インジェクション攻撃が可能になることを理解しています。専門家の意見に対抗するためのより直接的な弾薬を探しています - 存在する場合)。
その他の詳細:Oracle 11gR2, Java 1.6