Foros del Web » Programando para Internet » ASP Clásico »

RecordSet RecordCount vs SQL Count

Estas en el tema de RecordSet RecordCount vs SQL Count en el foro de ASP Clásico en Foros del Web. Bien... la pregunta es mas bien sencilla... queria saber si es lo mismo Código: Set RecordSet = Server.CreateObject("ADODB.Recordset") strSQL = "SELECT nombre FROM tabla WHERE ...
  #1 (permalink)  
Antiguo 13/04/2008, 03:36
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 17 años, 1 mes
Puntos: 5
RecordSet RecordCount vs SQL Count

Bien... la pregunta es mas bien sencilla... queria saber si es lo mismo

Código:
Set RecordSet = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT nombre FROM tabla WHERE id = " & Request.QueryString("id")
RecordSet.Open strSQL, adoCon, adOpenStatic, adLockOptimistic

Cantidad = cInt(RecordSet.RecordCount)

If Cantidad > 0 Then
Response.Write(RecordSet("nombre"))
Else
Response.Write("Sin resultados")
End If
...que...

Código:
Set RecordSet = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT COUNT(nombre) AS sql_cantidad, nombre FROM tabla WHERE id = " & Request.QueryString("id")
RecordSet.Open strSQL, adoCon, adOpenStatic, adLockOptimistic

Cantidad = cInt(RecordSet("sql_cantidad"))

If Cantidad > 0 Then
Response.Write(RecordSet("nombre "))
Else
Response.Write("Sin resultados")
End If

Cual es mas eficiente? Son lo mismo? Alguna recomendacion?

Gracias!
  #2 (permalink)  
Antiguo 13/04/2008, 08:38
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Re: RecordSet RecordCount vs SQL Count

Hola i_e_s27, el primer bloque de código abre un recordset con ciertos campos, y utilizas una de las propiedades del rs para contar sus registros, en tanto que el segundo, realmente solo devuelves el contador, por lo tanto los demás campos no están disponibles.

Bajo ciertos tipos de cerrojo, la propiedad recordcount del recordset no funciona, aunque no soy de la idea de inventar el agua tibia, yo te recomendaría que si te funciona el recordcount, ve por ese camino, de lo contrario, yo trataría de crear un arreglo a partir del recordser mediante getRows y contar su número de índices, esto equivaldría a un recordcount, y tendrías disponibles, los campos y el contador.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 13/04/2008, 16:32
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 17 años, 1 mes
Puntos: 5
Re: RecordSet RecordCount vs SQL Count

Cita:
Iniciado por u_goldman Ver Mensaje
Hola i_e_s27, el primer bloque de código abre un recordset con ciertos campos, y utilizas una de las propiedades del rs para contar sus registros, en tanto que el segundo, realmente solo devuelves el contador, por lo tanto los demás campos no están disponibles.
De hecho abro el campo "nombre" en ambos ejemplos, porque independientemente de la cantidad de registros, necesito saber el valor del nombre.
El tema de cuantos registros tengo es para para saber si mi consulta entrego uno o mas resultados; porque si no entrego ningun resultado y yo pongo Response.Write(RecordSet("nombre")) me va a tirar error.


Cita:
Iniciado por u_goldman Ver Mensaje
Bajo ciertos tipos de cerrojo, la propiedad recordcount del recordset no funciona, aunque no soy de la idea de inventar el agua tibia, yo te recomendaría que si te funciona el recordcount, ve por ese camino, de lo contrario, yo trataría de crear un arreglo a partir del recordser mediante getRows y contar su número de índices, esto equivaldría a un recordcount, y tendrías disponibles, los campos y el contador.
Lo de los cerrojos ya lo sabia, lo de getRows no; ahora me pongo a averiguar sobre ello.

Pero en realidad mi pregunta venia a las cuestiones de Cual es la mejor practica? o Cual es mas eficiente?

Gracias por responder u_g!
  #4 (permalink)  
Antiguo 13/04/2008, 22:24
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Re: RecordSet RecordCount vs SQL Count

Cita:
Iniciado por i_e_s27 Ver Mensaje
De hecho abro el campo "nombre" en ambos ejemplos, porque independientemente de la cantidad de registros, necesito saber el valor del nombre.
El tema de cuantos registros tengo es para para saber si mi consulta entrego uno o mas resultados; porque si no entrego ningun resultado y yo pongo Response.Write(RecordSet("nombre")) me va a tirar error.


Lo de los cerrojos ya lo sabia, lo de getRows no; ahora me pongo a averiguar sobre ello.

Pero en realidad mi pregunta venia a las cuestiones de Cual es la mejor practica? o Cual es mas eficiente?

Gracias por responder u_g!
Es cierto disculpa, es que estaba en estado inconveniente en realidad no te sabría decir cuál es más eficiente, me quiero imaginar que la opción donde obtienes de base de datos el número de registros, pues no necesitas la capa intermedia que calcula este número, aunque aún así tiene el inconveniente de que el producto cartesiano resultante de esta consulta es grande, pero recuerda que con pocos datos y poca concurrencia cualquier cosa funcionará, así que si es una aplicación chica-mediana, cualquier opción te debe venir bien.

De lo contrario podrías probar con algún "stress tool" y no te olvides de contarnos las conclusiones.

__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 13/04/2008, 23:53
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 17 años, 1 mes
Puntos: 5
Re: RecordSet RecordCount vs SQL Count

Pues en realidad si es una aplicacion chica, pero uno siempre trata de hacer las cosas lo mejor posible, no? Ademas de querer aprender un poco mas y aplicar los conocimientos... Es una cuestion cuasi perfeccionista mia jajajaja

Tan solo pregunte por si alguno tenia la repuesta en mente, o a mano. Tampoco es cosa de que se pongan a averiguar ni a hacer tests de stress comparativos.

Gracias por tus respuestas u_g siempre tan atento!
  #6 (permalink)  
Antiguo 14/04/2008, 07:21
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: RecordSet RecordCount vs SQL Count

Bueno, supongo es válido para ASP también, peeeeero, utilizar el método RecordCount (por que por lo menos en Delphi es un método no una propiedad), hace que el cliente (el IIS en este caso) solicite todos los registros del query (fetchall) al servidor de base de datos. Si vas a hacer algo con ellos, pues a lo mejor se justifica, pero si no y solo quieres saber el número de filas que cumplen cierta condición, pues regresar el COUNT a mi parecer es lo correcto.

Mis $0.02 como dirían algunos
  #7 (permalink)  
Antiguo 14/04/2008, 07:50
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Re: RecordSet RecordCount vs SQL Count

interesante post :)

Cita:
Iniciado por i_e_s27 Ver Mensaje
... El tema de cuantos registros tengo es para para saber si mi consulta entrego uno o mas resultados; porque si no entrego ningun resultado y yo pongo Response.Write(RecordSet("nombre")) me va a tirar error...
para evitar el error manejalo antes

si es eof o bof entonces

response.write "no hay registros que mostrar..."
response.end

(y evitas que la pagina se siga cargando o saltas esta consulta)

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #8 (permalink)  
Antiguo 14/04/2008, 12:19
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 17 años, 1 mes
Puntos: 5
De acuerdo Re: RecordSet RecordCount vs SQL Count

Gracias Myakire por tu leccion de teoria, muy interesante :) Que mas puedo decir? Me gusta aprender jijiji

Cita:
Iniciado por JuanRAPerez Ver Mensaje
interesante post :)
Lo mismo opino!! :)

Cita:
Iniciado por JuanRAPerez Ver Mensaje
para evitar el error manejalo antes

si es eof o bof entonces

response.write "no hay registros que mostrar..."
response.end

(y evitas que la pagina se siga cargando o saltas esta consulta)
Mmmm me habia olvidado del BOF y EOF, esa es buena tambien. Yo me malacostumbre a si RecordCount > 0

Bueno, de a poco voy limando mis asperezas
  #9 (permalink)  
Antiguo 14/04/2008, 12:21
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Re: RecordSet RecordCount vs SQL Count

igual podrias probar

Cita:
if RecordCount > 0 then
'trae datos
else
'no trae datos
end if
suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
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 03:15.