Árvore de páginas

01. DADOS GERAIS

Linha de Produto:Franquias e Redes
Segmento:Varejo
Módulo:Server
Função:Relatórios de Promoções
Ticket:
Requisito/Story/Issue (informe o requisito relacionado) :DVARLIVECP-7810


02. SITUAÇÃO/REQUISITO

Criação de um índice na tabela vigencia para otimizar o ORDER BY utilizado no Relatório de Promoções Encerradas.

Cenário Atual

Atualmente, o relatório de promoções encerradas realiza ordenação pelos campos filial.id, vigencia.inicio e vigencia.fim. Foi identificado via análise de plano de execução que o SQL Server realiza operação de Sort explícito, elevando o custo da consulta.

Requisito

Criar um índice que permita ao otimizador utilizar Index Seek e evitar o uso de Sort, melhorando a performance da consulta.

03. SOLUÇÃO

Cláusula de ordenação da query:

ORDER BY filial.id ASC, vigencia.inicio ASC, vigencia.fim ASC


Tabela afetada: vigencia


Problema identificado:

  • O plano de execução mostra operação de Sort com custo elevado (~22–25%).

  • A ausência de índice adequado impede o uso de Index Seek.



Solução Proposta

Criar os seguintes índices não clusterizados:

Índice Vigência Início e Fim
CREATE NONCLUSTERED INDEX IX_Vigencia_Inicio_Fim
ON vigencia (inicio ASC, fim ASC);
Índice Situação Promoção x Status x Data
CREATE NONCLUSTERED INDEX IDX_situacao_promocao_status_data
    ON situacao_promocao (statusPromocao, dataEncerramento)
    INCLUDE (filial_id, promocao_id);



Critérios de Aceite

  • O índice IX_Vigencia_Inicio_Fim foi criado com sucesso.

  • O plano de execução da query não contém mais operação de Sort.

  • O acesso à tabela vigencia passa a utilizar Index Seek.

  • Melhoria de performance confirmada com tempo de execução e IO lógico reduzidos.


Impacto e Considerações

  • Ganho direto de performance em relatórios analíticos.

  • Pequeno aumento no custo de manutenção DML em vigencia.

  • Baixo risco de impacto funcional.

  • Índice pode ser revisado e ajustado após testes em ambiente de homologação.


Componentes

  • Banco de Dados

  • Relatórios / BI

  • Performance


  • Sem rótulos