WebサーバーからDBAサーバーへの接続が非常に遅く、単一のWeb要求を処理するために一連の3つのクエリを実行する必要があると想定します。クエリを1つにまとめる方法はありますか?次のシナリオを想定します
person.id person.name
1 James
2 Stacy
。
country.id country.name
1 USA
2 UK
。
location.person_id location.country_id
1 1
1 2
Webフォームは、name = "James" country = "China"という2つの変数を投稿し、次のようにします。
- 「ジェームズ」は存在しますか、存在しない場合は、ジェームズを挿入します
- 「中国」は存在しますか、存在しない場合は、中国を挿入します
- 「ジェームズ」は「中国」に住んでいますか、関係を挿入しない場合
すなわちのようなもの
select person.id, country.id, location.person_id
from person, country, location
where
person.name="James" and
country.name="China" and
person.id=location.id and country.id=location.country_id
上記のクエリは、個人、国、または場所のいずれかが存在しない場合、レコードを返さないため、役に立ちません。
ストアドプロシージャを使用してこれを行うことは可能ですが、すべてのデータベースがストアドプロシージャをサポートしているわけではありません。