私はこれらのconfigsのバージョンと一緒にいくつかのアプリケーションの構成設定を保持している私のDB内のテーブルを持っている:どこの句で入れ子の選択を取り除くのですか?
app_id | config | version
--------------------------
app1 | conf1v1 | 1
app2 | conf2v1 | 1
app1 | conf1v2 | 2
私は、アプリケーションごとに最新の構成(最大バージョン番号を持つもの)を取得する必要があります。私はこのようなクエリを使用します:
select c.app_id, c.config, c.version
from config c
where
c.version=(select max(c2.version) from config c2 where c2.app_id = c.app_id)
しかし、これは非効率的なようです。私は、この作業を行うより効率的な方法があるのだろうか?
「*非効率だと思われる」と言ったらどういう意味ですか?あなたは実際に測定しましたか?あなたは実行計画を調査しましたか?それにもかかわらず、私は、このクエリが非効率的であるという明らかな理由は見当たりません。 –
@BrankoDimitrijevic私はwhere節でselectを実行すると、各行のヒットがクエリによって返されると考えられます。 –
@BrankoDimitrijevicこのテーブルにはどのようなインデックスを作成する必要がありますか? –