私は現在Java/DB2バックエンドのWebアプリケーションを開発中のジュニア開発者です。データベースは現在最適化されていないので、改善の余地があります。問題は私がこれについての経験がなく、誰も私を助けることができないということだけです。 複数のWHERE条件に基づいて選択クエリを最適化する
SomeTableName
MyPkey
ColOne
ColTwo
ColThree
ColFour
ColFive
は、私はこれらのようなクエリのためのデータベースを最適化する方法を把握しようとしていた。
SELECT * FROM SomeTableName WHERE ColOne = 'some value'
SELECT * FROM SomeTableName WHERE ColOne = 'some value' AND ColTwo = 'another'
SELECT * FROM SomeTableName WHERE ColFive = 11 AND ColThree = 'hello world'
SELECT * FROM SomeTableName WHERE ColOne = 'hi' AND ColTwo = 'val1' AND ColThree = 'val2' AND ColFour = 'val3' AND ColFive = 'val4'
私は、SELECT
文は異なる列の組み合わせを持っているWHERE
条件を持っている描写しようとしています値と私はどのようにこのようなクエリを最適化するか分からない。
アドバイスはありますか?
EDIT:DB2が独自の最適化を追加するかどうかはわかりませんが、いずれの列にもインデックスが設定されていないことは確かです。
最初に見ておくべきは、テーブル定義ですが、JavaやDB2についてはあまりよく分かりませんので、詳細を教えてください。ほとんどのSQLの状況では、このようなクエリは、適切なインデックスがあることを確認することで大幅に改善できます。 – Henry
データベースにはインデックスがありません。私は1つ前に作成することを考えましたが、それを設定する方法はわかりませんでした(つまり、1つのインデックスで1つのインデックスを作成する必要がありますか?または1つのインデックスで複数の列を作成する必要がありますか?) –
ほとんどの場合、 DB。遅い場合は、テーブルにインデックスを追加する必要があります。それらがなければ、毎回フルテーブルスキャンを実行しています。 –