Usar HASH cuando el criterio de busqueda sea por igualdad.

Usar B-tree con cualquier otro criterio de busqueda (>, >=, <=, LIKE, etc)


Si, estas en lo correcto, pero hacer la claridad que SOLO se usa un índice BTREE en un like si el inicio del criterio es fijo ej. 'criterio%' pero no si es '%criterio' esto es porque para navegar a través de un árbol binario debes tener un punto de entrada.

Otro punto a aclarar es que si usas un locale diferente a 'C' debes crear el índice con 'xxxxx_pattern_ops' para que lo utilice al consultar sobre cadenas.

Algo que leí alguna vez es que NO se recomienda utilizar índices HASH ya que el grupo de desarrollo de postgresql no los seguirá manteniendo ya que la ganancia de performance entre un hash y un btree es muy poco y no justifica su mantenimiento a futuro. Esto lo dice en la documentación de la versión 8.1:

http://www.postgresql.org/docs/8.1/static/indexes-types.html

Pero miré la documentación de la 8.4 y la nota cambió:

http://www.postgresql.org/docs/8.4/static/indexes-types.html

Vuelven a nombrar la necesidad de hacer un REINDEX después de un crash pero ahora ya no hacen la comparación de performance entre los HASH y los BTREE ... cambió esta apreción de la versión 8.1 a la 8.4?

Atentamente,

RAUL DUQUE
Bogotá, Colombia
--
TIP 8: explain analyze es tu amigo

Responder a