none
table scan RRS feed

Respostas

  • Rafa,

    A query que postei acima faz exatamente isso, é o SQL te sugerindo criação de indices baseado em suas consultas passadas. Só nao automatize 100% uma criação encima desta query, analise todos os indices e veja seus impactos. Vale lembrar tambem que quando trabalhamos com DMV, estamos falando de informações coletadas desde que a instancia esta no ar e não todo o historico da instancia.


    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
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    • Marcado como Resposta rafa-martin segunda-feira, 18 de fevereiro de 2013 19:19
    segunda-feira, 18 de fevereiro de 2013 19:11
    Moderador

Todas as Respostas

  • Rafa,

    Table scan é um meio de acesso no SQL Server que pode ser visualisado no seu plano de execução, este no caso acontece apenas para tabela heaps (Sem indice cluster) aonde nenhum outro indice secundario satisfaça sua consulta.


    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
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 18 de fevereiro de 2013 18:55
    Moderador
  • isso eu sei.

    mais existe um script, que mostra quais são as consultas e/ou tabelas que estão demorando mais para trazer o resultado. ela também, mostra quais índices podem ser criados.

    eu já fiz um script assim, mais não lembro completamente e não estou achando nada a respeito (script)...

    segunda-feira, 18 de fevereiro de 2013 18:58
  • Rafa,

    Existem muitos scripts na internet, busque pela DMV missing_index. Aqui abaixo um exemplo:

    SELECT

    mid

    .statement

    ,migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * (migs.user_seeks + migs.user_scans) AS improvement_measure,OBJECT_NAME(mid.Object_id),

    'CREATE INDEX [missing_index_' + CONVERT (VARCHAR, mig.index_group_handle) + '_' + CONVERT (VARCHAR, mid.index_handle)

    + '_' + LEFT (PARSENAME(mid.statement, 1), 32) + ']'

    + ' ON ' + mid.statement

    + ' (' + ISNULL (mid.equality_columns,'')

    + CASE WHEN mid.equality_columns IS NOT NULL AND mid.inequality_columns IS NOT NULL THEN ',' ELSE '' END

    + ISNULL (mid.inequality_columns, '')

    + ')'

    + ISNULL (' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement,

    migs

    .*, mid.database_id, mid.[object_id]

    FROM

    sys.dm_db_missing_index_groups mig

    INNER

    JOIN sys.dm_db_missing_index_group_stats migs ON migs.group_handle = mig.index_group_handle

    INNER

    JOIN sys.dm_db_missing_index_details mid ON mig.index_handle = mid.index_handle

    WHERE

    migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * (migs.user_seeks + migs.user_scans) > 10

    ORDER

    BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC


    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
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 18 de fevereiro de 2013 19:01
    Moderador
  • então na verdade eu queria saber a porcentagem de consumo das minhas tabelas, consultas... me mostrando quais indices posso criar para melhorar performance, por exemplo.
    segunda-feira, 18 de fevereiro de 2013 19:08
  • Rafa,

    A query que postei acima faz exatamente isso, é o SQL te sugerindo criação de indices baseado em suas consultas passadas. Só nao automatize 100% uma criação encima desta query, analise todos os indices e veja seus impactos. Vale lembrar tambem que quando trabalhamos com DMV, estamos falando de informações coletadas desde que a instancia esta no ar e não todo o historico da instancia.


    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
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    • Marcado como Resposta rafa-martin segunda-feira, 18 de fevereiro de 2013 19:19
    segunda-feira, 18 de fevereiro de 2013 19:11
    Moderador
  • valeu!
    segunda-feira, 18 de fevereiro de 2013 19:19
  • só um detalhe: as tabelas (dm_db_missing_index_groups, dm_db_missing_index_group_stats e dm_db_missing_index_details) estão vazias. pq?
    segunda-feira, 18 de fevereiro de 2013 19:23
  • São DMVs, quando foi a ultima vez que voce fez um restart na instancia? A base de dados esta sendo utilizada?

    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
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 18 de fevereiro de 2013 19:26
    Moderador
  • sinceramente não me lembro. mais a a base de dados é utilizada diariamente. na verdade 24h por dia.
    segunda-feira, 18 de fevereiro de 2013 19:30