Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Por que mi SQL esta muy lento?

Estas en el tema de Por que mi SQL esta muy lento? en el foro de SQL Server en Foros del Web. Hola, tengo problemas con mi servidor SQL 2005 que esta tardando demasiado, Si le pido que ejecute un procedimiento almacenado tarda de 40 a 45 ...
  #1 (permalink)  
Antiguo 21/02/2011, 11:31
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Por que mi SQL esta muy lento?

Hola, tengo problemas con mi servidor SQL 2005 que esta tardando demasiado, Si le pido que ejecute un procedimiento almacenado tarda de 40 a 45 segundos, y aun asi solo me devuelva 10 registros o simplemente no me devuelva ningun valor. ¿Esto es normal?
Esto podria ser por la cantidad de registros que tienen las tablas que estoy consultando? por ejemplo las 2 tablas que consulto tienen la siguiente longitud de registros:
Código SQL:
Ver original
  1. SELECT COUNT(*) FROM pesos
  2. RETURN:125732151
  3. SELECT COUNT(*) FROM htargets
  4. RETURN:387892
Estos registros siguen aumentando constantemente. Como comento, nose si sea por la cantidad de registros que tengo. Podrian darme sus opiniones acerca de esto y algunots consejos para mejorar el funcionamiento? A continuacion dejo una captura de pantalla en el siguiente link para que puedan observar qur incluso sin darme algun dato, tarda mucho:
http://s1.postimage.org/groifgwro/sql.png
Saludos
  #2 (permalink)  
Antiguo 21/02/2011, 12:51
 
Fecha de Ingreso: enero-2011
Ubicación: medellin
Mensajes: 194
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Por que mi SQL esta muy lento?

bueno el sql server consume mucha ram quizas necesites cerrar programas que consume y tratar de no estar de tener varios aplicativos abiertos mientras se ejecuta el sql o la consulta
  #3 (permalink)  
Antiguo 21/02/2011, 13:10
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Por que mi SQL esta muy lento?

Solo se ve que ejecutas un procedimiento, ¿que hace?, ¿tus tablas tienen indices?, ¿has hecho algun plan de mantenimiento?, ¿Que Edicion-Version (service pack) tienes instalado?, ¿que otras aplicaciones estan instaladas en tu servidor?
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 21/02/2011, 13:17
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Por que mi SQL esta muy lento?

Hola,
Tengo un servidor exlcusivamente para SQL, iislas tengo SP2. Mi procedimiento es el siguiente:
Código SQL:
Ver original
  1. USE [wasp]
  2. GO
  3. /****** Object:  StoredProcedure [dbo].[cuenta]    Script Date: 02/17/2011 16:30:12 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8.  
  9.  
  10.  
  11. ALTER PROCEDURE [dbo].[report]
  12. @finicio datetime,
  13. @ffin datetime,
  14. @linea nvarchar(5),
  15. @tubo nvarchar(5),
  16. @hora nvarchar(15) AS
  17. BEGIN
  18.     SET Nocount ON
  19. SELECT o.Linea,o.Tubo,h.Marca,h.Target,p.Peso,p.Vaso,O.Codigo,p.Hora,p.Fecha
  20.     INTO #checho
  21.     FROM pesos AS p, optimas AS o,htargets AS h
  22.     WHERE o.codigo = p.codOptima AND o.linea = @linea
  23.     AND o.tubo = @tubo AND p.fecha  >=@finicio AND p.fecha<@ffin
  24.     AND h.fecha >=@finicio AND h.fecha<@ffin
  25.     AND p.hora= @hora AND h.codoptima = o.codigo AND h.hora= @hora
  26.     SELECT *,(SELECT COUNT(1)total FROM #checho) AS Totality FROM #checho ORDER BY fecha
  27.        
  28. END
Sobre el plan de mantenimiento no he hecho ninguno puesto no tengo muchos conocimientos de administracion de SQL. Podrias darme algunos consejos?
  #5 (permalink)  
Antiguo 21/02/2011, 14:49
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Por que mi SQL esta muy lento?

¿Edicion-Version?

Tienes un Wizard para crear tu plan de mantenimiento

Tampoco nos cuentas sobre los INDICES de la tabla(s) en cuestion

Declara tus variables (en el analizador de consultas)

Setealas (colocales valores)

Y antes de ejecutar tu query, SET STATISTICS IO ON

Código SQL:
Ver original
  1. #
  2. SELECT o.Linea,o.Tubo,h.Marca,h.Target,p.Peso,p.Vaso,O.Codigo,p.Hora,p.Fecha
  3. #
  4.     INTO #checho
  5. #
  6.     FROM pesos AS p, optimas AS o,htargets AS h
  7. #
  8.     WHERE o.codigo = p.codOptima AND o.linea = @linea
  9. #
  10.     AND o.tubo = @tubo AND p.fecha  >=@finicio AND p.fecha<@ffin
  11. #
  12.     AND h.fecha >=@finicio AND h.fecha<@ffin
  13. #
  14.     AND p.hora= @hora AND h.codoptima = o.codigo AND h.hora= @hora
  15. #
  16.     SELECT *,(SELECT COUNT(1)total FROM #checho) AS Totality FROM #checho ORDER BY fecha
  17. #

Muestra el resultado de tus estadisticas
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 22/02/2011, 02:38
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Por que mi SQL esta muy lento?

Usa INNER JOIN para unir las tablas, es infinitamente más eficiente (y claro) que hacerlo como lo estás haciendo.

A la hora de unir tablas, comienza por la que tenga menos registros.

En la WHERE utiliza primero las condiciones sobre los indices y PK y después, las que queden, ordenalas de más a menos restrictivas

Con esos tres criterios tu consulta mejorará MUCHO su eficiencia.
  #7 (permalink)  
Antiguo 22/02/2011, 10:17
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Por que mi SQL esta muy lento?

Código:
Microsoft SQL Server Management Studio						9.00.3042.00
Microsoft Analysis Services Client Tools						2005.090.3042.00
Microsoft Data Access Components (MDAC)						2000.086.3959.00 (srv03_sp2_rtm.070216-1710)
Microsoft MSXML						2.6 3.0 6.0 
Microsoft Internet Explorer						6.0.3790.3959
Microsoft .NET Framework						2.0.50727.3615
Operating System						5.2.3790
Ya intente hacer el Inner join pero me da error:
Código SQL:
Ver original
  1. USE [wasp]
  2. GO
  3. /****** Object:  StoredProcedure [dbo].[report]    Script Date: 02/22/2011 09:47:34 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8.  
  9.  
  10.  
  11. ALTER PROCEDURE [dbo].[report]
  12. @finicio datetime,
  13. @ffin datetime,
  14. @linea nvarchar(5),
  15. @tubo nvarchar(5),
  16. @hora nvarchar(15) AS
  17. BEGIN
  18.     SET Nocount ON
  19. SELECT o.Linea,o.Tubo,h.Marca,h.Target,p.Peso,p.Vaso,O.Codigo,p.Hora,p.Fecha
  20.     INTO #checho
  21.     FROM pesos AS p, optimas AS o,htargets AS h
  22.     INNER JOIN pesos ON pesos.codoptima = codiogo.optmimas
  23.     WHERE o.codigo = p.codOptima AND o.linea = @linea
  24.     AND o.tubo = @tubo AND p.fecha  >=@finicio AND p.fecha<@ffin
  25.     AND h.fecha >=@finicio AND h.fecha<@ffin
  26.     AND p.hora= @hora AND h.codoptima = o.codigo AND h.hora= @hora
  27.     SELECT *,(SELECT COUNT(1)total FROM #checho) AS Totality FROM #checho ORDER BY fecha
  28.        
  29. END
Dejo uina captura de pantalla de mis tablas
  #8 (permalink)  
Antiguo 22/02/2011, 10:48
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Por que mi SQL esta muy lento?

Haz un INNER JOIN por cada tabla que vayas a unir.
  #9 (permalink)  
Antiguo 22/02/2011, 11:13
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Por que mi SQL esta muy lento?

Ejecuta esto y muestra el resultado:

Código SQL:
Ver original
  1. SELECT
  2. CAST( SERVERPROPERTY( 'MachineName' ) AS VARCHAR( 30 ) ) AS MachineName ,
  3. CAST( SERVERPROPERTY( 'InstanceName' ) AS VARCHAR( 30 ) ) AS Instance ,
  4. CAST( SERVERPROPERTY( 'ProductVersion' ) AS VARCHAR( 30 ) ) AS ProductVersion ,
  5. CAST( SERVERPROPERTY( 'ProductLevel' ) AS VARCHAR( 30 ) ) AS ProductLevel ,
  6. CAST( SERVERPROPERTY( 'Edition' ) AS VARCHAR( 30 ) ) AS Edition ,
  7. ( CASE SERVERPROPERTY( 'EngineEdition')
  8. WHEN 1 THEN 'Personal or Desktop'
  9. WHEN 2 THEN 'Standard'
  10. WHEN 3 THEN 'Enterprise'
  11. END ) AS EngineType ,
  12. CAST( SERVERPROPERTY( 'LicenseType' ) AS VARCHAR( 30 ) ) AS LicenseType ,
  13. SERVERPROPERTY( 'NumLicenses' ) AS #Licenses;
__________________
MCTS Isaias Islas
  #10 (permalink)  
Antiguo 22/02/2011, 11:17
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Por que mi SQL esta muy lento?

Hola iislas:
http://ompldr.org/vN2ltaw
  #11 (permalink)  
Antiguo 22/02/2011, 12:20
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Por que mi SQL esta muy lento?

Debes aplicar el ULTIMO SERVICE PACK, tienes una version 2005 Standar Edition.

Como bien dice Heimish2000, por cada tabla que intervenga en tu query, debes hacer un INNER JOIN y revisar que tus columnas mencionadas depues del WHERE, sean indices.
__________________
MCTS Isaias Islas
  #12 (permalink)  
Antiguo 23/02/2011, 09:26
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Por que mi SQL esta muy lento?

Cual es el ultimo servipack?? solo encuentro el SP2.
  #13 (permalink)  
Antiguo 23/02/2011, 18:16
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Por que mi SQL esta muy lento?

http://www.microsoft.com/downloads/e...b-47bd345baece
__________________
MCTS Isaias Islas
  #14 (permalink)  
Antiguo 24/02/2011, 09:10
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Por que mi SQL esta muy lento?

Podria tamnoenm afectar en la lentitud del sql server que este este recibiendo muchaas consultas por segundo, alrededor de unos 50 inserts por segundo en estas tablas.
Otra cosa, es necesario que quite el servipack que tengo o simplemente instalo este y ya reemplazara al anterior, es decir al que tengo actual?
  #15 (permalink)  
Antiguo 24/02/2011, 10:22
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Por que mi SQL esta muy lento?

No es necesario "quitar" (ya que no se puede) el actual service pack, solo aplica el ultimo.

En cuanto a las consultas, te sugiero revises tus INDICES.
__________________
MCTS Isaias Islas

Etiquetas: lento, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:06.