如何优化此 sql 查询并缩短?

How to optimize this sql query and shorten?

我有两个表,想优化下面的查询。 我要同行小图和大图栏。

    Table Projects

    ProjectID | ProjectName | ProjectContent
    ----------------------------------------
       2      | Test        | Test

    Table Media



    RID | MediaTypeID | FilePathAndName  | ProjectID
    ------------------------------------------------
    1   |      1      | big_photo.jpeg   |    2
    2   |      2      | small_photo.jpeg |    2



    SELECT
        T1.ProjectID,
        T1.ProjectName,
        T1.ProjectContent,
        T1.FilePathAndName AS BigPhoto,
        T2.FilePathAndName AS SmallPhoto
    FROM
    (
        SELECT 
            P.ProjectID,
            P.ProjectName,
            P.ProjectContent,
            M.FilePathAndName,
            ROW_NUMBER() over(ORDER BY M.RID) AS RN             
        FROM 
            Projects (NOLOCK) AS P
            INNER JOIN Media (NOLOCK) AS M ON M.RID = P.ProjectID AND M.MediaType = 1       
        WHERE
            P.ProjectID = 2
    ) AS T1,
    (       
        SELECT 
            P.ProjectID,
            P.ProjectName,
            P.ProjectContent,
            M.FilePathAndName,
            ROW_NUMBER() over(ORDER BY M.RID) AS RN             
        FROM 
            Projects (NOLOCK) AS P
            INNER JOIN Media (NOLOCK) AS M ON M.RID = P.ProjectID AND M.MediaType = 2       
        WHERE
            P.ProjectID = 2
    ) AS T2
    WHERE 
        T1.RN = T2.RN

结果

如果我对您的代码的理解正确,我认为您不需要连接,也不需要 ROW_NUMBER:

SELECT 
    P.ProjectID,
    P.ProjectName,
    P.ProjectContent,
    MIN(CASE WHEN  M.MediaType = 1 THEN M.FilePathAndName END) AS BigPhoto,
    MIN(CASE WHEN  M.MediaType = 2 THEN M.FilePathAndName END) AS SmallPhoto
FROM 
    Projects (NOLOCK) AS P
    INNER JOIN Media (NOLOCK) AS M ON M.RID = P.ProjectID       
WHERE
     M.MediaType IN (1,2) AND P.ProjectID = 2
GROUP BY 
    P.ProjectID,
    P.ProjectName,
    P.ProjectContent;