Hola a todos!
Mi consulta es simple: hay alguna otra forma de obtener el total de registros de una tabla, sin usar count(*) ? Tengo muchos registros y el count demora, me parece que se pasea por cada registro.
Gracias.
| |||
Obtener total de registros Hola a todos! Mi consulta es simple: hay alguna otra forma de obtener el total de registros de una tabla, sin usar count(*) ? Tengo muchos registros y el count demora, me parece que se pasea por cada registro. Gracias. |
| |||
Respuesta: Obtener total de registros * v. 8.3 * 5 500 000 registros * EXPLAIN ANALYZE "Aggregate (cost=103779.09..103779.10 rows=1 width=0) (actual time=824.399..824.399 rows=1 loops=1)" " -> Seq Scan on tabla (cost=0.00..90029.67 rows=5499767 width=0) (actual time=0.067..502.756 rows=5500000 loops=1)" "Total runtime: 824.468 ms" Tengo una PC core i5 2GB RAM El tiempo de respuesta es bueno, pero habra otro metodo mas rápido?, necesito saber la cantidad exacta probe con esto
Código SQL:
y el tiempo de respuesta es rápido (15ms) pero en la parte de "rows=" no está la cantidad exacta.Ver original Gracias. |
| |||
Respuesta: Obtener total de registros El tiempo se puede considerar bueno con el hardware que posees y sabiendo que postgresql no esta dise#ado para hacer un SELECT count(*) sin un where. Esto pasa porque pg debe hacer un scan de la tabla para darte ese resultado. Eso ya ha sido discutido antes en las listas de correo, y la solucion con la que la mayoria concuerda es crear una tabla donde almacenes el total de registros y se actualize mediante un trigger. Si encuentro el thread de la lista sobre el tema lo pongo aca. |
| ||||
Respuesta: Obtener total de registros Hola goku2011, Cita: Hay un pequeño truco que tal vez te pueda servir, en vez de usar COUNT(*), usar COUNT(<Nombre de un sólo campo>).Supon que tienes un campo clave primaria que se llama id, pues haces lo siguiente:
Código SQL:
Ver original Tal vez no te sirva, pero puedes probar a ver como te va. Trata siempre de evitar el uso del "*", el "*" es un comodín que tiene un gran coste dentro de las bases de datos en general, hay mucha información sobre ello que puedes conseguir con "San Google". Un cordial saludo.
__________________ ¿Cuál es el mejor lenguaje para programar? Aquel lenguaje por el cual te paguen más. [--::xdrtas.coolpage.biz::--] [---:::xdrtas:::---] |
| |||
Respuesta: Obtener total de registros Hice esto:
Código SQL:
y es más lento que esto: Ver original
Código SQL:
Tiempo de respuesta: 820ms y 712ms respectivamente.Ver original Si le aumento un where se hace más lento aún (1774ms). No lo sé, me parecen muy lentos, que hago? me resigno con el tiempo de respuesta? Habrá otra manera de obtener el numero de resultados de una consulta? |
| ||||
Respuesta: Obtener total de registros Pues si no te sirve, podrias hacer una tabla índice que contenga dos campos: Nombre de tabla | Número de registros y vas controlando los insert y delete sobre la tabla en cuestión, cada vez que se inserte vas incrementando en la tabla índice, y cada vez que borres decrementas, cuando hagas la consulta te vas a la tabla índice buscas el nombre de la tabla y desde ahí obtienes el número de registros, el inconveniente es tener completamente controlado el conteo de inserciones y eliminaciones sobre la tabla en cuestión para tener correctamente actualizado la tabla índice. Así como te digo una tabla podrias hacerlo sobre un archivo XML o de texto plano todo depende desde donde te interese buscar la información y para que tipo de aplicación lo utilices. Un cordial saludo.
__________________ ¿Cuál es el mejor lenguaje para programar? Aquel lenguaje por el cual te paguen más. [--::xdrtas.coolpage.biz::--] [---:::xdrtas:::---] |
Etiquetas: |