SQL Server Performance

Optimizar Consulta

Discussion in 'Preguntas sobre SQL Server en Español.' started by emorales, Jan 12, 2007.

  1. emorales New Member

    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 @SQL=@SQL + 'SELECT codigo,descripcion,avg(costo) CostoPromedio, ' <br />SET @SQL=@SQL + 'Sum(case tipo when 1 THEN cantidad*costo else 0 end) as Ventas, ' <br />SET @SQL=@SQL + 'Sum(case tipo when 2 THEN cantidad*costo else 0 end) as Compras '<br />SET @SQL=@SQL + ' FROM ventas '<br />SET @SQL=@SQL + ' WHERE convert(varchar,fecha,111) &gt;= ' + char(39) + @fechai + char(39) <br />SET @SQL=@SQL + ' and convert(varchar,fecha,111) &lt;= ' + char(39) + @fechaf + char(39) <br />SET @SQL=@SQL + ' 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
  2. Luis Martin Moderator

    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.



  3. emorales New Member

    No, lo probaré Luis y te informo GRACIAS

    edgar
  4. Luis Martin Moderator

    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.



  5. dayanjor New Member

    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?
  6. Luis Martin Moderator

    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.



  7. janamalu New Member

    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

Share This Page