SQL - Q conviene mas?

 
Vista:

Q conviene mas?

Publicado por fmonte (3 intervenciones) el 15/06/2006 04:18:31
Hola gente les presento una duda:
En mi laburo tengo q hacer una aplicacion, pero para arrancar tengo q recuperar informacion de tres base de datos de Access diferentes, o sea entre las tres Base de datos, iria llenando mi BD.
El tema es el siguiente q no sabemos que conviene mas hablando de costo y eficiencia?
- Primeramente, en una de las BD estarian la totalidad de registros que irian en nueva que tenemos q hacer, pero solo algunos campos no sirviria de esa BD.
-En otra BD, recuperariamos algunos campos.
-En la tercera lo mismo.
-Ademas, como a cada año se tenien q actualizar, necesitamos 3 campos de nuestra BD para usarlas en el proximo año, o sea si limpiamos las BD nuestra cada año, antes tenemos que recuperar esos tres campos para cada registro.

Primera Opcion:
-recorrer con un While la primera BD q estan todos los registros, y a medida que voy recorriendo, voy haciendo un SELECT de la segunda BD para recuperar campos q necesito y luego hacer un UPDATE con todos los campos recuperados para mi tabla final. Todo bien, pero surgio un problema, el tema que esta BD se renueva cada año, o sea cada año hay que hacer de nuevo estos pasos, para recuperar la informacion, porque estas 3 BD q mencione siempre van a existir, y a partir de estas armamos la nuestra. Comparando los registros de un año, al año siguiente que hay q hacer estos pasos nuevamente, puede darse el caso que se borren registros, que se actualicen o que se inserten. Voy a explicar cuando pasaria esto:
-Insercion: Es el caso que un registro del recorrido del WHILE no exista en la BD nuestra.
-Update: Es el caso que exista, entonces actualizamos.
-Borrado: Es el caso que existan registros en nuestra BD, que no esten en el recorrido del WHILE.
O sea para esto necesitamos en el medio del WHILE 1select y otro fuera del While de esta forma:

/////////////////////
While (hasta q la primera BD se termine){
- select (de nuestra tabla con la clave del registro recuperado del WHILE, para ver si existe o no)
if el Select da vacio, es porque no existe, entonce insertamos con INSERT, si existe actualizamos con UPDATE.
}
Luego un select de nuestra tabla para ver si existe en la primera BD, si no existe se borra con DELETE.
////////////////////

2da opcion:
Esta opcion seria limpiar la BD, o sea Borrarla toda cada año y empezar de nuevo. Luego se haria lo mismo q en la priemra opcion, se recorraria con un WHILE la primera BD y no pregutariamos si existe, sino que directamente INSERTAMOS, porque la BD la vaciamos antes.
El tema que antes de vaciarla, como habia dicho arriba de todo, tenemos q recuperar los tres campos, y bueno habiamos pensado usar un arreglo dinamico y ahi vamos guardando. Luego para para Insert en el WHILE, usariamos este arreglo para recuperar esos tres campos. Para buscar en el arreglo esos tres campos, tendriamos que hacer un metodo de busqueda, tipo una busqueda binaria.

Costos primera opcion: recorrido del while, el primer select, luego insertamos o actualizamos, y luego otro select y borramos registros.
Costos segunda opcion: recorrer nuestra BD, y guardarlo en un arreglo, luego hacer un WHILE y en el medio del WHILE, buscar en le arreglo dinamico los tres campos mencionados y luego hacer los insert.

Cual opcion comviene mas?? muchas gracias, si no entienden algo, diganmen.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Q conviene mas?

Publicado por Urrunaga (15 intervenciones) el 15/06/2006 05:44:12
Amigo:
De tu extensa consulta he podido sacar los siguiente:
Si quieres migrar la data de esas 3 BD de,Access,te recomiendo que vincules las 3 BD y las tablas necesarias en una sola y generes una tabla temporal con los datos y campos que necesites de tal manera te evitas de estar conectado a las 3 distintas y crearte confusiones.
Si la data a migrar es pequeña utiliza el metodo del WHILE que comentas,pero si en realidad la data crece con el tiempo,y tendras quye seguir accesando a ella,ese WHILE quedara limitado,por lo que te recomiendo que uses el Openrowset, con este metodo realizas las consultas del SQL contra el Access y no tienes que recorrer nada , si no creas SP de inserción,actualización o eliminación masiva,solo claro que tienes que verificar que tienes los indices correctos asi como los campos como para que hagas las relaciones.

Espero te haya ayudado en algo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Q conviene mas?

Publicado por fmonte (3 intervenciones) el 15/06/2006 05:52:17
Digamos q vos pronopones otra opcion que no tenemos en cuenta no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Q conviene mas?

Publicado por Urrunaga (15 intervenciones) el 15/06/2006 06:16:31
Asi es amigo,el metodo que indicas si te sirve bien,pero yo te hablo de mejorar la performance y rapidez de tus procesos,tu sabes que un Select es mas rapido que un While y eso es loq que quieres no, rendimiento. Analizalo y veanlo bien si lo que les propongo no les desvia demasiado de sus proyecciones pero si no lo hacen ahora a la larga lo tendran que hacer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Q conviene mas?

Publicado por fmonte (3 intervenciones) el 15/06/2006 07:01:39
Si, vamos a ver q hacemos, lo q pasa q nos dieron esas dos propuestas para hacer, asi q no sabemos q hacer, el jefe manda viste, jejeje. Entre las 2 propuestas, cual te parece mejor??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Q conviene mas?

Publicado por Urrunaga (15 intervenciones) el 15/06/2006 21:32:53
Si dices que el jefe manda entonces que el decida amigo no te queda otra, ahora si puedes refutar la idea sustentandola de la manera que te explico y le haces entender que es mejor de la manera que les planteo pueden llegar a un acuerdo,y si no te apoya bueno supongo que la 1era opcion estaria mas a la medida.

Saludos
CU
AP-Sistemas
Lima-Perú
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar