Ver Mensaje Individual
  #17 (permalink)  
Antiguo 19/04/2005, 12:45
Avatar de Neuron_376
Neuron_376
 
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 20 años, 1 mes
Puntos: 2
Bueno

-----------------------------------
Escrito por silvia1977

Tengo una pagina web en asp y sql server 2000. Ahora mismo tengo 260000 usuarios dados de alta. La pagina va un poco lenta y estoy optimizando consultas. Cuando un usuario se da de alta en el sistema utilizo un RECORDSET, o sea,
-----------------------------------

Pasos de los dos metodos:

Recordset:

1. Crear objeto // Set rs = CreateObject("ADODB.RECORDSET")
rs.Cursortype = 1
rs.LockType = 3

2. Consulta a la base de datos para abrila // rs.open "SELECT * FROM usuarios", conexionBD

3. INSERT en blanco //
rs.Addnew
rs("us_nombre") = Request.Form("nombre")

4. UPDATE con los datos //
rs.Update

5. Cerrar la base de datos.
rs.Close


INSERT normal

1. Abrir conexion a la base de datos // conn = Server.CreateObject("....")

2. INSERT directo // conn.Execute("insert....");


Bueno, con esto lo que se mira muy rapido es que el insert directo tiene muchas ventajas tecnicas:

1. No mantiene una conexion permanente (recordset) directa a la base de datos.

2. Todo se realiza en 1 solo acceso (1 consulta tipo insert), mientras que el recordset utiliza 3 accesos (consulta, inserta, actualiza), esto es mas de 3 veces el tiempo y memoria que esta gastando en el servidor.

Es rapido mirar eso...

Lo otro que pasa, es que el RECORDSET representa una conexion abierta hacia la base de datos con todos los permisos, looks, trans que necesita cargar, esto mientras este abierto, esto puede causar fugas de memoria y bajo redimiento en el server de bases de datos, por otra parte con un conn normal, este representa solamente una via de acceso la cual no se tiene que preocupar por nada mas que darle paso a las consultas que pasamos a traves de el, lo cual ocupa menos recursos y mas seguridad.

Por eso el insert normal es 100 veces mas recomendable que el recordset, claro hay casos especiales donde usas recordset, por ejemplo cuando estas trabajando con datos Binary, y otros casos especiales.

Espero haber sido de ayuda en este tema.