User List
------ ------
userId (PK) listId (PK)
fullName description
addedById (FK with userId in User table)
modifiedById (FK with userId in User table)
fullNameをユーザーテーブルから引き出す必要があります。
このクエリが機能し、必要なデータが表示されます。しかし、このクエリを構築するより良い方法があるかどうかはわかりません。主にパフォーマンスの問題が原因で、メインの選択クエリ内に複数のサブ選択クエリがあることに熱心ではありません。
select t1.[description],
t1.addedById,
t1.modifiedById,
(select fullName from dbo.User where userId = t1.addedById) as [AddedByUser],
(select fullName from dbo.User where userId = t1.modifiedById) as [ModifiedByUser]
from dbo.List t1
誰がクエリの改善を提案し、またはあるとして維持するために助言することができれば、私は本当に感謝します。
ありがとうございました。
代わりにLEFT JOINを実行してください。 – jarlh
'userId'にインデックスがあると仮定しても、クエリは正常です。別のアプローチはLEFT JOINです。どちらのアプローチでも、パフォーマンスはかなり似ているはずです。 –
SOのトピックはありません。 CodeReviewに投稿することをお勧めします。 –