AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-147711

Giri Bkm's questions

Martin Hope
Giri Bkm
Asked: 2018-03-27 18:42:56 +0800 CST

Como saber se esse plano de execução é adequado para esta consulta (Sql server 2005)?

  • 1

Esta é a minha consulta.

Declare
    @Pivv NVarchar(Max),
    @Query NVarchar(Max),
    @Pivv1 NVarchar(Max),
    @Columns NVarchar(Max)

Select
    @Pivv = Coalesce(@Pivv + ',' , '') + 
            Quotename(MatchType + '_' + '_Name'),
    @Pivv1 = Coalesce(@Pivv1 + ',' , '') + 
             Quotename('HighestRunsAndWicketsIn' + MatchType),
    @Columns = Isnull(@Columns + ',', '') +
               'Max(' + (MatchType + '_' + '_Name') + ') As ' + (MatchType + '_' + '_Name') +
               ',' +
               'Max(' + ('HighestRunsAndWicketsIn' + MatchType) + ') As ' + ('HighestRunsAndWicketsIn' + MatchType)
From
    PlayersCareerBatting t Join PlayersBioDataNew a
On
    t.Id=a.Id
Group By
    MatchType

Set @Query=
        'Select
            ''Batting'',
            ' + @Columns + '
        From (
                Select
                    MatchType + ''_'' + ''_Name'' As Type1,
                    FirstName + '' '' + MiddleName + '' '' + LastName As Runs1,
                    ''HighestRunsAndWicketsIn'' + MatchType As Type,
                    RunsScored As Runs
                From ( 
                        Select 
                            FirstName, 
                            MiddleName,
                            LastName, 
                            MatchType, 
                            RunsScored
                        From (
                                Select 
                                    s.Id, 
                                    FirstName, 
                                    MiddleName,
                                    LastName, 
                                    MatchType, 
                                    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
                     ) x2
             ) x3
        Pivot 
            (
                Max(Runs1) For Type1 In (' + @Pivv + ')
            ) x4
        Pivot
            (
                Max(Runs) For Type In (' + @Pivv1 + ')
            ) x5

        Union All

        Select
            ''Bowling'',
            ' + @Columns + '
        From (
                Select
                    MatchType + ''_'' + ''_Name'' As Type1,
                    FirstName + '' '' + MiddleName + '' '' + LastName As Wickets1,
                    ''HighestRunsAndWicketsIn'' + MatchType As Type,
                    Wickets As Wickets
                From ( 
                        Select 
                            FirstName, 
                            MiddleName,
                            LastName,
                            MatchType, 
                            Wickets
                        From (
                                Select 
                                    s.Id, 
                                    FirstName, 
                                    MiddleName,
                                    LastName, 
                                    MatchType, 
                                    Wickets, 
                                    Row_Number() Over(Partition By MatchType Order By Wickets Desc) rn
                                From 
                                    PlayersBowlingCareer s Join PlayersBioDataNew a 
                                On s.Id=a.Id
                             ) x6
                        Where rn=1
                     ) x7
             ) x8 
        Pivot 
            (
                Max(Wickets1) For Type1 In (' + @Pivv + ')
            ) x9
        Pivot
            (
                Max(Wickets) For Type In (' + @Pivv1 + ')
            ) x10'

Exec(@Query)

A consulta contém 3 tabelas. Playersbiodatanew (5000 linhas), players?careerbatting (20000 linhas), playersbowlingcareer (20000 linhas). E, eu criei pivô nessa consulta. Agora eu quero saber, essa consulta é mais adequada para o plano de execução mencionado abaixo

plano de execução

plano de execução

plano de execução

Link para plano de execução, https://www.brentozar.com/pastetheplan/?id=SyJPRDs9M

Dados de amostra

Para jogadores de mesaBioDataNew

Id | Firstname | middlename | lastname
----------------------------------------
1  | Sachin    | Ramesh     | Tendulkar
----------------------------------------
2  | Suresh    | Kumar      | Raina
----------------------------------------

Para Jogadores de MesaCarreiraBatting

CareerId | Id | Matchtype | runsscored
---------------------------------------
1        | 1  | Test      | 15921
----------------------------------------
2        | 1  | ODI       | 18426
----------------------------------------
3        | 1  | T20I      | 10
----------------------------------------
4        | 1  | IPL       | 2334
----------------------------------------
5        | 2  | Test      | 768
----------------------------------------
6        | 2  | ODI       | 5568
----------------------------------------
7        | 2  | T20I      | 1498
----------------------------------------
8        | 2  | IPL       | 4540
----------------------------------------

Para Jogadores De MesaBowlingCarreira

CareerId | Id | Matchtype | wickets
---------------------------------------
1        | 1  | Test      | 46
----------------------------------------
2        | 1  | ODI       | 154
----------------------------------------
3        | 1  | T20I      | 1
----------------------------------------
4        | 1  | IPL       | 0
----------------------------------------
5        | 2  | Test      | 13
----------------------------------------
6        | 2  | ODI       | 36
----------------------------------------
7        | 2  | T20I      | 13
----------------------------------------
8        | 2  | IPL       | 25
----------------------------------------

Saída esperada

(No Column Name) | IPL__Name | HighestRunsAndWicketsInIPL | Test__Name | HighestRunsAndWicketsInTest | T20I__Name | HighestRunsAndWicketsInT20I | ODI__Name | HighestRunsAndWicketsInODI
----------------------------------------------------------------------------
Batting | Suresh Kumar Raina | 4540 | Sachin Ramesh Tendulkar | 15921 | Suresh Kumar Raina | 1498 | Sachin Ramesh Tendulkar | 18426
----------------------------------------------------------------------------
Bowling | Suresh Kumar Raina | 25 | Sachin Ramesh Tendulkar | 46 | Suresh Kumar Raina | 13 | Sachin Ramesh Tendulkar | 154
----------------------------------------------------------------------------

Estou obtendo a saída de quem obteve o máximo de pontos e wickets para cada tipo de partida.

sql-server sql-server-2005
  • 1 respostas
  • 131 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve