none
Índices duplicados com usos diferentes RRS feed

  • Pergunta

  • Boa tarde,

    Tenho dois índices iguais em uma dada tabela, gostaria de saber pq eles tem usos diferentes. Não deveria um deles ser descartado pelo otimizador de queries? Se eu excluir o que não é a PK, o otimizador vai recorrer a ela?

    IndexName     Seeks        Scans    Lookups  Updates   Colunas  Tipo
    PK_1              10497797  2174      643         3221273  ID            Clustered
    IDX_2            16337        2802      0             1882         ID           NonClustered
    sexta-feira, 5 de abril de 2013 16:21

Respostas

  • Ronald, boa tarde!

    Nesse caso você pode realizar a exclusão desse índice NonClustered. Após isso o otimizador irá recorrer ao índice primário.


    /* Se útil por favor classifique a resposta */

    • Marcado como Resposta Ronald Shonuff sexta-feira, 5 de abril de 2013 16:35
    sexta-feira, 5 de abril de 2013 16:25
  • Ronald,

    Sim, voce pode excluir o indice nomclustered (IDX_2) que o SQL Server o utilizara, sendo até um acesso mais rapido em alguns casos. O unico momento em que o acesso nao seria mais rapido seria se voce pesquisasse apenas:

    SELECT Id

    FROM SuaTabela

    E caso havesse where, apenas sobre a coluna ID, em qualquer outra situação o indice cluster será utilizado.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    • Marcado como Resposta Ronald Shonuff sexta-feira, 5 de abril de 2013 16:35
    sexta-feira, 5 de abril de 2013 16:26
    Moderador

Todas as Respostas

  • Ronald, boa tarde!

    Nesse caso você pode realizar a exclusão desse índice NonClustered. Após isso o otimizador irá recorrer ao índice primário.


    /* Se útil por favor classifique a resposta */

    • Marcado como Resposta Ronald Shonuff sexta-feira, 5 de abril de 2013 16:35
    sexta-feira, 5 de abril de 2013 16:25
  • Ronald,

    Sim, voce pode excluir o indice nomclustered (IDX_2) que o SQL Server o utilizara, sendo até um acesso mais rapido em alguns casos. O unico momento em que o acesso nao seria mais rapido seria se voce pesquisasse apenas:

    SELECT Id

    FROM SuaTabela

    E caso havesse where, apenas sobre a coluna ID, em qualquer outra situação o indice cluster será utilizado.


    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    ITIL V3 Foundation
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    • Marcado como Resposta Ronald Shonuff sexta-feira, 5 de abril de 2013 16:35
    sexta-feira, 5 de abril de 2013 16:26
    Moderador
  • Obrigado pessoal. Abraço.
    sexta-feira, 5 de abril de 2013 16:36