Optimizar Consulta | SQL Server Performance Forums

SQL Server Performance Forum – Threads Archive

Optimizar Consulta

Buenas tengo una tabla que contiene cerca de 6 millones de registros ya que es tabla detalle. y la consulta que realizo se tarda alrededor de 5 minutos, quisiera saber si puedo hacer que sea mas rapida que eso. Los parametros que paso son fecha inicial y fecha final A continuación detallo consulta.<br /><br />CREATE PROCEDURE SKU<br />@fechai nvarchar(10),<br />@fechaf nvarchar(10)<br />AS<br /><br />DECLARE @SQL AS VARCHAR(8000) <br />– limpiamos las variables por si a caso<br /><br />SET @SQL=”<br /><br />SET @SQL = ‘ ‘<br />SET @[email protected] + ‘SELECT codigo,descripcion,avg(costo) CostoPromedio, ‘ <br />SET @[email protected] + ‘Sum(case tipo when 1 THEN cantidad*costo else 0 end) as Ventas, ‘ <br />SET @[email protected] + ‘Sum(case tipo when 2 THEN cantidad*costo else 0 end) as Compras ‘<br />SET @[email protected] + ‘ FROM ventas ‘<br />SET @[email protected] + ‘ WHERE convert(varchar,fecha,111) &gt;= ‘ + char(39) + @fechai + char(39) <br />SET @[email protected] + ‘ and convert(varchar,fecha,111) &lt;= ‘ + char(39) + @fechaf + char(39) <br />SET @[email protected] + ‘ GROUP BY codigo,descripcion ORDER BY CODIGO'<br /><br />/* Ejecutamos la consulta, si quieres ver como queda, cambia el: EXECUTE(@SQL) por PRINT(@SQL) */ <br /><br />EXECUTE (@SQL) <br /><br />/* OJO: Si la consulta resultante en @SQL tiene más de 8000 caracteres el script dará un error ya que el sql no quedará completo <img src=’/community/emoticons/emotion-6.gif’ alt=’:(‘ />. */ <br /><br />– FIN DE SP<br />GO<br /><br /><br /><br /><br /><br />OJO = TENGO INDICE POR CODIGO<br /><br />edgar
Has probado con el indicador de indices? (Index tuning wizard).
Quizàs no alcance con un solo ìndice por còdigo. Luis Martin
Moderator
SQL-Server-Performance.com All in Love is Fair
Stevie Wonder
All postings are provided “AS IS” with no warranties for accuracy.
No, lo probaré Luis y te informo GRACIAS edgar
Ok. Vuelve con los resultados.
Luis Martin
Moderator
SQL-Server-Performance.com All in Love is Fair
Stevie Wonder
All postings are provided “AS IS” with no warranties for accuracy.
Una pregunta : porque usar el EXEC y no escribir la consulta directamente? no se ahorraria en eso el tiempo de la busqueda del plan de ejecucion?
No creo que haya diferencia ya que recién en el EXE se ejecuta el plan de ejecución, sea en una sola instrucción como tu propones o con el EXE en el ejemplo.
Supongo que lo escribe de esa forma por un tema de claridad en lo que hace. Luis Martin
Moderator
SQL-Server-Performance.com All in Love is Fair
Stevie Wonder
All postings are provided “AS IS” with no warranties for accuracy.
Deberias probar poniendo indices ssobre el campo fecha de la tabla ventas, eso te ayudaria mucisimo si no es que te resolveria el probelema Saludos Angel
]]>