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

Sql server 2008 lento

Estas en el tema de Sql server 2008 lento en el foro de SQL Server en Foros del Web. Hola Uso windows 7 y asp Tenia access y lo he migrado a sql 2008 express Va super lento ahora con sql (hasta 10 veces ...
  #1 (permalink)  
Antiguo 16/02/2012, 15:26
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 10 meses
Puntos: 1
Sql server 2008 lento

Hola
Uso windows 7 y asp
Tenia access y lo he migrado a sql 2008 express

Va super lento ahora con sql (hasta 10 veces mas lento usando el mismo codigo y ddbb)

esta perfectamente indexado

De que puede ser? Como puedo solucionarlo?
Muchas gracias
  #2 (permalink)  
Antiguo 16/02/2012, 15:44
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sql server 2008 lento

perfectamente indexado??? seguro??? ya revisaste los planes de execucion de tus queries?? La maquina donde instalaste sql server 2008 tiene buenos recursos?? que procesador tiene? espacio en disco etc??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 16/02/2012, 15:59
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: Sql server 2008 lento

PERFECTAMENTE bien preguntado.
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 17/02/2012, 08:46
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Sql server 2008 lento

Estoy usando:

HP 6000 Pro MT
Inte Coler 2 Quac CPU8400 @ 2.66GHz
RAM 2.00 GB
Sistema operativo 32 bits
IIS 6.1
Windows 7



Con el siguiente codigo y tanto ACCESS como MS-SQL SERVER 2008 Express perfectamente indexado
En ACCES Tarda 4.30 segundos
En MS-SQL SERVER 2008 Express Tarda 29.10 segundos

CREO QUE LA DIFERENCIA ES BRUTAL !!! SE SUPONE QUE SQL DEBERIA SER COMO MINIMO IGUAL DE RAPIDO QUE ACCESS

' En la Tabla TablaClientes hay 9000 lineas
Set rs = ConData.Execute("Select ClienteCodigo,ClienteComercial From TablaClientes Where ClienteComercial = 'Pedro' ")
Do While Not rs.EOF
' Para vuestra info .... Por aqui paso unas 4300 veces

' En la Tabla TablaContactos hay 23700 lineas
sSQL_1="UPDATE TablaContactos SET ContactoComercial='Cliente de Pedro' WHERE ContactoCodigoCliente = '"&rs("ClienteCodigo")&"' "
Set RS_1 = ConData.Execute(sSQL_1)

rs.MoveNext
Loop
rs.Close
Set rs = Nothing
  #5 (permalink)  
Antiguo 17/02/2012, 09:11
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Sql server 2008 lento

a que te refieres con perfectamente indexado??? puedes poner un ejemplo de tus datos y de tus indices "perfectos"???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 17/02/2012, 20:52
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 5 meses
Puntos: 85
Respuesta: Sql server 2008 lento

La optimización de un proceso se hace a diferentes niveles y siguiendo un orden, y los índices, aunque sean importantes, se suelen dejar para el final.

En este caso, primero deberías optimizar la lógica del proceso, puedes actualizar la tabla TablaContactos con un solo update en vez de 4300 update dentro del loop.

Set rs = ConData.Execute("Select ClienteCodigo,ClienteComercial From TablaClientes Where ClienteComercial = 'Pedro' ")
Do While Not rs.EOF
sSQL_1="UPDATE TablaContactos SET ContactoComercial='Cliente de Pedro' WHERE ContactoCodigoCliente = rs("ClienteCodigo")"
Set RS_1 = ConData.Execute(sSQL_1)
rs.MoveNext
Loop
rs.Close

vs

Set rs = ConData.Execute("update TablaContactos
set ContactoComercial='Cliente de Pedro'
from TablaClientes
where
TablaClientes.ClienteCodigo = TablaContactos.ContactoCodigoCliente
and TablaClientes.ClienteComercial = 'Pedro'")

Lo segundo es evaluar las diferencias entre SQL Server y Access, es cierto que SQL Server tiene mejor tiempo de respuesta en las consultas pero también tiene más costo en la gestión de las sesiones por lo que deberías optimizar los accesos a la base, por ejemplo en el caso del loop:

'Loop en la aplicación, se ejecutan 10 sentencias
var i int=1
Do While i < 10
sSQL="UPDATE t1 SET id=" + i + "
Set RS = ConData.Execute(sSQL)
i = i + 1
Loop

vs

'Loop en la base de datos, se ejecuta 1 sentencia
sSQL="declare @i int
set @i = 1
while @i < 10
begin
update t1 set id = @i
set @i = @i + 1
end"
Set rs = ConData.Execute(sSQL)

Y en tercer lugar los índices, para esto debes analizar el plan de ejecución de las consultas, a simple vista se podría sugerir indexar los campos CodigoCliente y ClienteComercial.

Saludos
  #7 (permalink)  
Antiguo 18/02/2012, 01:58
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Sql server 2008 lento

Mil gracias por tu respuesta.
Antes usabamos access (ahora ocupa 890 mb) y me aconsejaron migrar a sql.
El codigo asp lo hice yo, y la verdad es que no tengo ni idea de sql. Asi despues de leer tu respuesta no se que hacer, puest uque cambiar el codigo y hacer setencias wn sql no se. No soy informatico...
Somos una empresa de 15 personas y la base e datos crece a un ritmo de 50 mb/año.

Que me aconsejas? Sigo con access? O es demasiado grande ya la base de datos?

De nuevo gracias por tu ayuda.
  #8 (permalink)  
Antiguo 18/02/2012, 02:01
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Sql server 2008 lento

Hola
Perfectamente indexado quiero decir q los kiro alguien que sabia del tema y los indexo y regenero los indices
Y tengo indexasos los campos que mantaga decia (CodigoCliente y ClienteComercial)
que son los dos unicos que estan 'afectados' por select, where, etc ....
Los demas campos nobestan indexados porque al no ser necesario se pierden recursos si los indexara (al menos eso he oido)
  #9 (permalink)  
Antiguo 20/02/2012, 02:47
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Sql server 2008 lento

MATANGA ... Tu si que sabes !!!


Hay una diferencia de 24 segundos usando el codigo que me dijiste ... este es el verdadero problema de porque funcionaba lento ... con tu codigo va super rapido ! gracias !!!!

Set rs = ConData.Execute("update TablaContactos
set ContactoComercial='Cliente de Pedro'
from TablaClientes
where
TablaClientes.ClienteCodigo = TablaContactos.ContactoCodigoCliente
and TablaClientes.ClienteComercial = 'Pedro'")
  #10 (permalink)  
Antiguo 20/02/2012, 10:18
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Sql server 2008 lento

MATANGA ... no comprendo bien este codigo que me has dado

'Loop en la aplicación, se ejecutan 10 sentencias
var i int=1
Do While i < 10
sSQL="UPDATE t1 SET id=" + i + "
Set RS = ConData.Execute(sSQL)
i = i + 1
Loop


ME PUEDES DAR EL CODIGO INTEGRADO EN MI CONSULTA... ASI QUIZAS ENTIENDA LO QUE HE DE HACER

MUCHAS GRACIAS
  #11 (permalink)  
Antiguo 20/02/2012, 13:37
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: Sql server 2008 lento

¿Por que no dejar que la capa BASE DE DATOS haga el trabajo de actualizacion?

Creo que el PLAN DE EJECUCION mejoraria enormemente
__________________
MCTS Isaias Islas
  #12 (permalink)  
Antiguo 20/02/2012, 15:37
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Sql server 2008 lento

Gracias islas pero me suena a chino ... Me puedes decir como hacerlo ... Mas menos ?
  #13 (permalink)  
Antiguo 20/02/2012, 17:43
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: Sql server 2008 lento

Si, que en lugar de estar ejecutando codigo T-SQL desde su aplicativo, ejecute STORE PROCEDURE's
__________________
MCTS Isaias Islas

Etiquetas: access, asp, 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 13:27.