これはここでの質問に関連する質問です。私の質問はむしろ Java アプリケーションの観点からのものです。取得できるクライアントに応じてデータベースからデータを返す Web サービスがある場合、データベースを最適にクエリする方法を教えてください。
- Javaコードで列とフィルタ値の最大セットで選択を行うのは理にかなっていますか?
- それとも、多くの SQL PreparedStatements/NativeQueries を構築する方が良いでしょうか?それぞれが実際に返される列のみを要求しますか?
- 結合されたテーブルのみによって決定され、選択された列によって決定されない基本的なクエリを構築するための良い妥協点はありますか (これらはすべてです)?
データベースと保守可能なアプリケーションの両方にとって何が良いでしょうか? 現時点でわかっていること:
- ほとんどの JDBC ドライバー/SQL データベースは、SQL クエリを最適化し、将来の要求のために最適化されたバージョンをキャッシュします。すべての新しいクエリを分析して比較し、最適化されたバージョンを見つけて作成する必要があります...そしてメモリに保持します...最悪の場合、すべての新しいバリアントが新しい最適化されたバージョンを生成します。これらの単純な選択で最適化されたバージョンは同じになりますか?
select name, surname from person
select name from person
- 選択の多くのバリアントを書くのは醜いです-すべてのバリアントをテストし、維持し、高速にする必要があります...