Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Forzar uso de idices

Estas en el tema de Forzar uso de idices en el foro de PostgreSQL en Foros del Web. Buenos dias a todos Mi pregunta es si ahi algun metodo para obligar a postgres a usar indices en una consulta especifica o en todas ...
  #1 (permalink)  
Antiguo 12/03/2011, 23:02
 
Fecha de Ingreso: febrero-2007
Mensajes: 26
Antigüedad: 17 años, 9 meses
Puntos: 0
Forzar uso de idices

Buenos dias a todos

Mi pregunta es si ahi algun metodo para obligar a postgres a usar indices en una consulta especifica o en todas las consultas ya que tengo unas consultas con campos indexados y observando en el explain de pgadmin puedo ver que una consulta usa el indice cuando le paso ciertos parametros pero cuando le mando otros parametros no usa el indice. El caso especifico es el sgte:

Tengo este indice:

CREATE INDEX indicedictionarylv1
ON tabla
USING btree
(dictionary_lv1 NULLS FIRST);

luego ejecuto esta consulta:

SELECT dictionary_lv1 FROM tabla WHERE dictionary_lv1 = 'B'
retorna al rededor de 15.000 registros

y observo el explain de pgadmin y veo que si ejecuta el indice, pero si ejecuto esta otra consulta

SELECT dictionary_lv1 FROM tabla WHERE dictionary_lv1 = 'C'
retorna al rededor de 321.000 registros

y observo el explain veo que no utiliza el indice y por lo tanto la consulta tarda demasiado tiempo. Como pueden ver la consulta es la misma lo unico que cambia es el parametro y no entiendo por que en una usa el indice y en la otra no.

Agradesco de antemano cualquier ayuda. Muchas gracias
  #2 (permalink)  
Antiguo 13/03/2011, 21:30
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Forzar uso de idices

mira la variable enable_seqscan.

nos cuentas como te va.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 14/03/2011, 15:05
 
Fecha de Ingreso: febrero-2007
Mensajes: 26
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Forzar uso de idices

Excelente huesos muchas gracias!
La cuenstion es en el postgresql.conf poner la variable enable_seqscan = off, y la variable enable_indexscan = on y con eso logro que postgres siempre utilice los indices es un plan de ejecucion

Gracias de nuevo!
  #4 (permalink)  
Antiguo 14/03/2011, 15:46
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Forzar uso de idices

Estos cambios los puedes hacer desde la sesión. Y solo la alteraría en el tiempo de ejecución.
Así no te enredas con el postgresql.conf y no rtequieres reiniciar el servicio cada que vayas a hacer esto.

SET enable_seqscan = off

Esto desde una consola solo deshabilita la variable para la sesión que la emite.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 17/03/2011, 22:35
 
Fecha de Ingreso: febrero-2007
Mensajes: 26
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Forzar uso de idices

Que buen dato ese huesos. Supongo que para muchos de los parametros del postgres.conf aplica este comando. Gracias de nuevo!

Etiquetas: Ninguno
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 13:59.