Eliminación de Índices no Usados

Este procedimiento almacenado se ejecuta sin parámetros desde el Analizador de Consultas obteniéndose como salida el informe de los índices no utilizados.

BASE: EJEMPLO

TABLA: [dbo].[APLICACIONES]

INDICES:

    [IXC03.10.31_APLICACIONES_NroTrans]

TABLA: [dbo].[AWItemsAcumHistoricos]

INDICES:

    [IX_AWItemsAcumHistoricosFecha]

    [IX_AWItemsAcumHistoricosItem]

    [IXC_AWItemsAcumHistoricos_Fecha_CodItm]

TABLA: [dbo].[CAJASREG]

INDICES:

    [IXCP04.01.16_CAJASREG_CodCaj2_NroTrans]

TABLA: [dbo].[CHEQUES]

INDICES:

[IXC04.01.09_CHEQUES_FechaVto]

[IXCP04.01.16_CHEQUES_CodCtacte _NroTrans_Secuencia_NroTransegr_Tipo_Directo]

De la misma forma podemos encontrar  los índices usados, mediante el siguiente procedimiento almacenado:

CREATE PROCEDURE Indices_Usados AS

declare

@Base varchar(15),

@Tabla varchar(50),

@Indice varchar(100),

@BaseAnt varchar(15),

@TablaAnt varchar(50),

@Uso varchar(50)

declare IndicesUsados cursor for

 select Base, Tabla, Indice, convert(varchar,max(convert(money,replace(Uso,’,’,’.’))))as Uso

  from Analisis

  where Indice like ‘[[]IX%’

  group by Base, Tabla, Indice

  having sum(convert(money,replace(Uso,’,’,’.’))) > 0

Order by Base,Tabla,convert(varchar,max(convert(money,replace(Uso,’,’,’.’)))) desc,Indice

open IndicesUsados

fetch next from IndicesUsados into @Base, @Tabla, @Indice,@Uso

while (@@FETCH_STATUS <> -1)

begin

  if @Base <> @BaseAnt

     begin   

   Print ‘BASE: ‘ + @Base

   select @BaseAnt = @Base

   select @TablaAnt = ”

     end    

     if @Tabla <> @TablaAnt

     begin   

   Print ‘TABLA: ‘ + @Tabla

   Print ‘INDICES: ‘

   select @TablaAnt = @Tabla

     end

Continues…

Leave a comment

Your email address will not be published.