Giri Bkm Ответов: 0

Как я могу избежать подзапроса для этого запроса (SQL server 2005)?


Select 
    FirstName, 
    MiddleName,
    LastName, 
    MatchType, 
    RunsScored
From (
        Select  
            s.Id, 
            a.FirstName, 
            a.MiddleName,
            a.LastName, 
            s.MatchType, 
            s.RunsScored, 
            Row_Number() Over(Partition By MatchType Order By RunsScored Desc) rn
        From 
            PlayersCareerBatting s Join PlayersBioDataNew a 
        On s.Id=a.Id

     ) x
Where rn=1


вот мой код. для этого кода я получаю слишком медленную скорость запроса. поэтому я хочу ускорить запрос. для этого я собираюсь избежать подзапроса на этот счет. пожалуйста, помогите мне, как избежать подзапроса, чтобы выполнить запрос быстрее.

Что я уже пробовал:

Select a.firstname, a.middlename, s.matchtype, Max(s.Runsscored) from PlayersCareerBatting  s Join PlayersBioDataNew a 
		On s.Id=a.Id group by s.matchtype,a.firstname, a.middlename


я попробовал это сделать. но это показывает все строки, Я хочу только те строки, которые получили максимум в runsscored с их соответствующими именами.

Maciej Los

Является ли этот вопрос продолжением этот?

Giri Bkm

да, я думал, что подзапросы-это главная проблема для низкой скорости запросов. вот почему я перешел к тому, чтобы избегать подзапросов

ZurdoDev

Я не думаю, что ты сможешь.

itsmypassion

Вместо этого вы можете использовать CTE.

Rajesh Pandya

Вы можете использовать CTE, следующая ссылка будет полезна:
https://www.red-gate.com/simple-talk/sql/t-sql-programming/sql-server-2005-common-table-expressions/

0 Ответов