Saber cuantos registros tiene una tabla

Para saber cuantos registros hay en un tabla realizo lo sgt:
Private RgHis1 As New ADODB.Recordset
Dim Val1 as Long
Private Sub Form_Load()
RgHis1.Open "hiscli",BD,
adOpenForwardOnly, adLockReadOnly
Val1 = RgHis1.RecordCount
Set RgHis1 = Nothing
End Sub
Pero como la tabla posee más de 190 000
Registros, y sigue aumentando diariamente, demora unos 20 segundos aproximadamente.
Existe alguna otra forma de saber cuantos registros tiene una tabla.

6 Respuestas

Respuesta
1
La velocidad de respuesta en una consulta está determinada por varios factores como: la velocidad de procesamiento del ordenador donde está la base de datos, la velocidad y tráfico de red en caso de que estés accediendo a la base de datos de manera remota, el tamaño de la base de datos, el tamaño de la tabla y la cantidad de columnas que esta tenga, etc. Además hay que agregar que al utilizar el control ADO puede afectar a la velocidad de respuesta.
Yo te propongo que hagas la siguiente prueba.
Desde tu base de datos (yo usé MS ACCESS) te creas una consulta que estraiga el número de registros de la tabla. Ej:
"SELECT COUNT(IdCliente) AS NumeroDeRegistros FROM CLIENTES".
Por otra parte te creas un procedimiento almacenado que te permita ver exactamente el tiempo que la base de datos tarda en ejecutar la consulta.
Ej.:
inicio = time();
ejecutarConsulta();
fin = time();
Comparas inicio con fin y sabes el tiempo que se ha tardado la base de datos en ejecutar la consulta, lo cual te indica el tiempo mínimo que obtendrás desde Visual.
Una vez hecha la prueba desde tu código de Visual realizas la misma operación pero en vez de abrir una tabla "hiscli" abres la consulta que te has creado.
La diferencia está en que cuando abres una tabla realizas una consulta que te devuelve todos los campos y registros de la tabla y luego haces una consulta para saber el número de registro ("RgHis1.RecordCount"), lo cual es muy distinto a devolver solo un campo en el caso de la consulta que lee el número de registros.
OJO: Cuando abras la consulta no es necesario que hagas recordcount sino que leas el único registro que devuelve (Te lo comento porque te dije que hicieras lo mismo y no es exactamente lo mismo).
Respuesta
1
Si, hay otra forma:
Private RgHis1 As New ADODB.Recordset
Dim Val1 as Long
Private Sub Form_Load()
RgHis1. Open "SELECT COUNT(*) FROM hiscli", BD,
AdOpenForwardOnly, adLockReadOnly
Val1 = RgHis1.fields(0).value
Set RgHis1 = Nothing
End Sub
Asegurate que tu tabla está indexada por el campo que estás buscando para que acelere un poco más tu búsqueda.
Respuesta
1
La forma más eficiente de saber el número de registros de una tabla es con recordcount, ya que si lo hicieras recorriendo la tabla registro a registro tardaría mucho más.
Respuesta
1
Prueba con esta función de sql
SELECT Count(*) AS Total FROM config;
Donde total es el nombre de variable en donde te mostrara el resultado
Y config el nombre de tabla
Si bd es un recordset, prueba lo siguiente
varaiable=bd.fields.item(0)
Respuesta
1
a ver...
Podrías probar esto...
rs.movelast
Rs. Absoluteposition
Tal vez así tarde menos
Respuesta
1
Sinceramente no se si excita otra forma, es raro que tarde tanto, pero si tienes dudas consulta esta página www.lawebdelprogramador.com a mi no me ah dado ningún problema con registros hasta de 200,0000, es raro que a ti te de ese tipo de problema cuidate...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas