Index Tunning de SqlServer estoy algo confundido????

29/01/2005 - 17:47 por Developers | Informe spam
Amigos Tengo este Select-Sql en mi BD SQLSERVER2000SP3

SELECT D.ANHO, D.MES, D.FECHA, D.COD_ITE, IT.DET_ITE, IT.MEDIDA, D.SAL_ITE
FROM D_MOVI_ATG D
INNER JOIN M_MOVI_ATG M ON (M.ANHO=D.ANHO AND M.CDG_ZON=D.CDG_ZON AND
M.MES=D.MES AND M.DOC_REF=D.DOC_REF)
INNER JOIN M_ITEM_ATG IT ON (IT.COD_ITE=D.COD_ITE)
WHERE (LEFT(D.DOC_REF,2)='FV' OR LEFT(D.DOC_REF,2)='BV' OR
LEFT(D.DOC_REF,2)='SV' OR LEFT(D.DOC_REF,2)='TD' OR LEFT(D.DOC_REF,2)='SA'
OR (LEFT(D.DOC_REF,2)='SO' AND M.CLI_PRO='20131529008' AND (M.IDE>'08' AND
M.IDE<='18'))) AND
((D.CDG_ZON='02' AND D.AREA<='12') OR (D.CDG_ZON<>'02')) AND D.ANU<>'*' AND
D.FASN<>'N'

La Tablas tienen estos Indices:
Tabla: D_MOVI_ATG
Clustered a--> ANHO, CDG_ZON, MES, DOC_REF
Nonclusted a--> Cod_ite, Doc_Ref, Anu, Fasn, Area
Tabla: M_MOVI_ATG
Clustered a--> ANHO, CDG_ZON, MES, DOC_REF
NonClusted a--> Cli_Pro, Ide, Anu
Tabla: M_ITEM_ATG
Clustered a--> COD_ITE

Pero haciendo pruebas con el Index Tunning del Sqlserver para ver que es lo
que me recomienda y me dice lo siguiente:

CREATE NONCLUSTERED INDEX [D_MOVI_ATG4] ON [dbo].[D_MOVI_ATG] ([ANHO] ASC,
[CDG_ZON] ASC, [MES] ASC, [DOC_REF] ASC, [AREA] ASC, [COD_ITE] ASC, [FASN]
ASC, [ANU] ASC, [FECHA] ASC, [SAL_ITE] ASC )

CREATE NONCLUSTERED INDEX [M_MOVI_ATG10] ON [dbo].[M_MOVI_ATG] ([ANHO] ASC,
[CDG_ZON] ASC, [MES] ASC, [DOC_REF] ASC, [CLI_PRO] ASC, [IDE] ASC )

No entiendo porque me recomienda crear en estas dos tablas estos
indices...????? Si la Tabla ya tiene indices por esos campos indivuales

Gracias por toda la informacion que me puedan brindar.

Developers.
 

Leer las respuestas

#1 Maxi
30/01/2005 - 01:27 | Informe spam
Hola te lo recomienda porque armara un solo indice con todos los campos y
eso hara mejor la performance.

Por mas que tengas un indice por campo si tuvieras un solo indice con los
campos de esa consulta y en el orden que estan ahi, seria mas eficiente el
resultado.

Todo este tema hay que estudiarlo mucho, ya que podrias tener n indices y
penalizarias mucho a la bdd en otras instrucciones como las de insert ,
delete y update.

Un abrazo


"Developers" escribió en el mensaje
news:
Amigos Tengo este Select-Sql en mi BD SQLSERVER2000SP3

SELECT D.ANHO, D.MES, D.FECHA, D.COD_ITE, IT.DET_ITE, IT.MEDIDA, D.SAL_ITE
FROM D_MOVI_ATG D
INNER JOIN M_MOVI_ATG M ON (M.ANHO=D.ANHO AND M.CDG_ZON=D.CDG_ZON AND
M.MES=D.MES AND M.DOC_REF=D.DOC_REF)
INNER JOIN M_ITEM_ATG IT ON (IT.COD_ITE=D.COD_ITE)
WHERE (LEFT(D.DOC_REF,2)='FV' OR LEFT(D.DOC_REF,2)='BV' OR
LEFT(D.DOC_REF,2)='SV' OR LEFT(D.DOC_REF,2)='TD' OR LEFT(D.DOC_REF,2)='SA'
OR (LEFT(D.DOC_REF,2)='SO' AND M.CLI_PRO='20131529008' AND (M.IDE>'08' AND
M.IDE<='18'))) AND
((D.CDG_ZON='02' AND D.AREA<='12') OR (D.CDG_ZON<>'02')) AND D.ANU<>'*'
AND D.FASN<>'N'

La Tablas tienen estos Indices:
Tabla: D_MOVI_ATG
Clustered a--> ANHO, CDG_ZON, MES, DOC_REF
Nonclusted a--> Cod_ite, Doc_Ref, Anu, Fasn, Area
Tabla: M_MOVI_ATG
Clustered a--> ANHO, CDG_ZON, MES, DOC_REF
NonClusted a--> Cli_Pro, Ide, Anu
Tabla: M_ITEM_ATG
Clustered a--> COD_ITE

Pero haciendo pruebas con el Index Tunning del Sqlserver para ver que es
lo que me recomienda y me dice lo siguiente:

CREATE NONCLUSTERED INDEX [D_MOVI_ATG4] ON [dbo].[D_MOVI_ATG] ([ANHO] ASC,
[CDG_ZON] ASC, [MES] ASC, [DOC_REF] ASC, [AREA] ASC, [COD_ITE] ASC, [FASN]
ASC, [ANU] ASC, [FECHA] ASC, [SAL_ITE] ASC )

CREATE NONCLUSTERED INDEX [M_MOVI_ATG10] ON [dbo].[M_MOVI_ATG] ([ANHO]
ASC, [CDG_ZON] ASC, [MES] ASC, [DOC_REF] ASC, [CLI_PRO] ASC, [IDE] ASC )

No entiendo porque me recomienda crear en estas dos tablas estos
indices...????? Si la Tabla ya tiene indices por esos campos
indivuales

Gracias por toda la informacion que me puedan brindar.

Developers.

Preguntas similares