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

Consulta sobre Actualizar, Ingresar y eliminar

Estas en el tema de Consulta sobre Actualizar, Ingresar y eliminar en el foro de SQL Server en Foros del Web. Buen dia señores tengo una duda que espero me puedan despejar, ¿Qué es más óptimo hacer en un tabla que alberga cerca de 1 millon ...
  #1 (permalink)  
Antiguo 08/07/2011, 14:53
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Pregunta Consulta sobre Actualizar, Ingresar y eliminar

Buen dia señores tengo una duda que espero me puedan despejar, ¿Qué es más óptimo hacer en un tabla que alberga cerca de 1 millon de registros aproximadamente, a la cual se le toma del indice 700'000 ¿Actualizar los 300'000 que quedan registro por registro ó borrarlos y generarlos con nuevos datos?. Espero me haya explicado bien, sino me preguntan. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #2 (permalink)  
Antiguo 08/07/2011, 17: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: Consulta sobre Actualizar, Ingresar y eliminar

Pues nada, que no se entiende, ¿como es que tomas del indice 700,000?, ¿porque, o cual es la razon para actualizar los otros 300,000?
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 09/07/2011, 07:41
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Consulta sobre Actualizar, Ingresar y eliminar

Hola iislas, gracias por tu respuesta, cuando digo tomo del indice 700'000 es porque las filas tienen un campo ID que es correlativo, la razon para actualizar los 300'000 es porque la tabla es como un historial... al anular un documento en un periodo los registros que le siguen hacen calculos con el registro anterior por eso apartir del id 700'001 para adelante se actualizaran los datos, y pues era eso mi consulta... ahora.... es mejor hacer update registro por registro o eliminar esos registros y volverlos a generar? Espero haber sido claro. Gracias!
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #4 (permalink)  
Antiguo 09/07/2011, 23:06
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Consulta sobre Actualizar, Ingresar y eliminar

En general, las operaciones DML son similares, el motor realiza más o menos el mismo trabajo para un insert, delete o update.

Si regeneras los registros tendrás varias operaciones DML en vez de una, pero si el proceso te permite modificar los datos en una única sentencia, podrías sacar ventajas si el plan de ejecución utiliza Parallel Query, por ejemplo si T1 es la tabla que tiene los datos y #T1 es una tabla temporal con la misma estructura:

Código:
insert into #t1 
select una_funcion(un_campo) 
from t1 where id >= 700001; --registros modificados

insert into #t1 
select un_campo 
from t1 where id < 700001; --registros no modificados

truncate table t1;

insert into t1 select * from #t1;
Si haces un update es menos trabajo porque tienes una única operación DML, aunque rara vez se resuelve con Parallel Query y además existe el caso (poco probable) que al actualizar los datos, si alguna fila crece en tamaño al punto de que ya no entra en la página actual, el motor tiene que gestionar un proceso de migración para mover la fila a otra página, esto no pasa en un insert porque se sabe de antemano el espacio necesario para los datos nuevos.

El tema es relativo, el primer caso puede ser útil para tablas grandes, si la cantidad de registros a modificar son mayoría, si el proceso se ejecuta con poca frecuencia o si te puedes permitir un bloqueo a nivel de tabla, lo opuesto para el segundo. Prueba cada uno y compara los resultados.

Saludos
  #5 (permalink)  
Antiguo 11/07/2011, 07:20
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Consulta sobre Actualizar, Ingresar y eliminar

Gracias Matanga por tu respuesta, todo esto no se va a realizar en 1 sentencia, se va a actualizar registro por registro por separado ya que se hará un recalculo de cada documento. Gracias a todos haré pruebas para ver cual es la forma que menos tiempo toma. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #6 (permalink)  
Antiguo 11/07/2011, 09:31
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: Consulta sobre Actualizar, Ingresar y eliminar

SQL Server, como muchos otros motores de bases de datos, no fue creado para procesar registro x registro.
__________________
MCTS Isaias Islas

Etiquetas: ingresar, tabla
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 08:02.