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