同じデータを別の列で参照する必要がある場合は、常に複数の結合を使用しています。このように:同じテーブルを複数回クエリする
select
a.ContactName
,b.ContactName
,c.ContactName
from
OrderBase as o
left join ContactBase as a on o.contactid1 = a.ContactId
left join ContactBase as b on o.contactid2 = b.ContactId
left join ContactBase as c on o.contactid3 = c.ContactId
私はこれが非常に非効率であると常に考えていました。 3回のルックアップのためにテーブルを3回ロードする。これを行うより効率的な方法はありますか?私はコードの記述ではなく、リソースの使用を意味します。 これに対処するSQL Serverのそれ以降のバージョンに実装された良いツールはありますか?
正しいインデックスを使用している場合は、これが最善のアプローチである必要があります。 – Shnugo
連絡先1,2および3に3つの列が必要です。その結果を得る他の方法はありません。あなたのデータベースはどれくらい大きいですか?それが十分に大きくなければ、なぜこれが効率的ではないと思うのですか?パフォーマンスの問題がある場合は、この特定のクエリに対してschema_bindingビューを使用できます。それはディスクストレージを使用します。ところで、私はあなたのContacBaseテーブルが大きくてはならないと思います。 ContactBaseテーブルが大きい場合、インデックスを追加するとパフォーマンスが向上します。そうしないと、多くの機能が改善されません。 – FLICKER
OrderBaseはcontactName1、contactName2、contactName3を追加し、OrderBaseが更新された場所にストアできます。その後、参加する必要はありません... – daniel