From: | Jaime Casanova <systemguards(at)gmail(dot)com> |
---|---|
To: | David Prieto <davidp(at)sgth(dot)es> |
Cc: | Gregorio Diaz <gregorio_diaz(at)yahoo(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Inquietud sobre Count() |
Date: | 2006-01-18 14:08:38 |
Message-ID: | c2d9e70e0601180608h7b7b85f6v1fb8d46298da8f0f@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On 1/18/06, David Prieto <davidp(at)sgth(dot)es> wrote:
>
> > Porque Count no usa los indices o algo asi ?
>
> Si count tiene que recorrerse todos los registros para contarlos uno a uno
> ¿Qué solucionaría usando indices?
>
> Un saludo,
> David Prieto
>
>
que el tamaño de los indices es por definicion mas pequeño que el de
los registros en la tabla, asi que podria traer mas a la vez y eso
reduciria la cantidad de lecturas a discos y sí habria ganancia...
el problema es que para que eso ocurra, es decir, una lectura solo
indice (sin necesidad de visitar la tupla), el indice necesita tener
informacion sobre si la tupla es visible o no para esa transaccion...
y los indices no tienen ese tipo de informacion por que seria muy
costoso y/o muy complicado mantener esa informacion sin crear
"condiciones de carrera"...
Se han sugerido algunas soluciones pero no es tan facil como decir
"deberia usar un indice"...
en todo caso, el problema existe basicamente para "select count(*)
from tabla", si usas un where no es tan costoso... y la verdad, puesto
que "select count(*) from tabla" no es una operacion que alguien
normalmente haria...
--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)
From | Date | Subject | |
---|---|---|---|
Next Message | Carlos | 2006-01-18 14:33:16 | {Spam?} Re: funcion recursiva |
Previous Message | Jaime Casanova | 2006-01-18 13:57:01 | Re: [GENERAL] migrar |