I가 다음과 같은 데이터베이스 테이블SQL 선택 하위 쿼리
User List
------ ------
userId (PK) listId (PK)
fullName description
addedById (FK with userId in User table)
modifiedById (FK with userId in User table)
나는 목록 테이블에서 모든 데이터를 꺼내해야하지만 대신 의 ID를 보여주는의이 modifiedById 및 을 addedById, I 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에 게시하는 것이 좋습니다. –