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

no me usa el indice consulta basica

Estas en el tema de no me usa el indice consulta basica en el foro de PostgreSQL en Foros del Web. Hola gente, tengo la siguiente tabla CREATE TABLE userstatus ( username character varying(64) NOT NULL, resource character varying(64) NOT NULL, online integer NOT NULL, presence ...
  #1 (permalink)  
Antiguo 02/02/2010, 08:59
 
Fecha de Ingreso: febrero-2010
Ubicación: Argentina
Mensajes: 3
Antigüedad: 14 años, 10 meses
Puntos: 0
no me usa el indice consulta basica

Hola gente, tengo la siguiente tabla

CREATE TABLE userstatus
(
username character varying(64) NOT NULL,
resource character varying(64) NOT NULL,
online integer NOT NULL,
presence character(15),
lastipaddress character(15) NOT NULL,
lastlogindate character(15) NOT NULL,
lastlogoffdate character(15),
CONSTRAINT userstatus_pk PRIMARY KEY (username, resource)
)

pero al hacer la siguiente consulta

explain select * from userstatus WHERE username = 'ale600' and resource = 'sistema';

y en el explain me figura:

seq scan on userStatus
Filter: (((username)::text = 'ale600'::text) AND ((resource)::text = 'sistema'::text))

No deberia usar el indice que se genera con la primary key? muchas gracias por su ayuda
  #2 (permalink)  
Antiguo 02/02/2010, 09:29
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: no me usa el indice consulta basica

En que momento creaste el constraint?

Copié y pegué tu codigo e hice un explain.

Código SQL:
Ver original
  1. pruebas=> CREATE TABLE userstatus
  2. pruebas-> (
  3. pruebas(> username CHARACTER VARYING(64) NOT NULL,
  4. pruebas(> resource CHARACTER VARYING(64) NOT NULL,
  5. pruebas(> online INTEGER NOT NULL,
  6. pruebas(> presence CHARACTER(15),
  7. pruebas(> lastipaddress CHARACTER(15) NOT NULL,
  8. pruebas(> lastlogindate CHARACTER(15) NOT NULL,
  9. pruebas(> lastlogoffdate CHARACTER(15),
  10. pruebas(> CONSTRAINT userstatus_pk PRIMARY KEY (username, resource)
  11. pruebas(> );
  12. NOTICE:  CREATE TABLE / PRIMARY KEY will CREATE implicit INDEX "userstatus_pk" FOR TABLE "userstatus
  13. "
  14. CREATE TABLE
  15. pruebas=> EXPLAIN SELECT *FROM userstatus WHERE username = 'ale600' AND resource = 'sistema';
  16.                                           QUERY PLAN
  17. ----------------------------------------------------------------------------------------------
  18.  INDEX Scan USING userstatus_pk ON userstatus  (cost=0.00..8.27 ROWS=1 width=180)
  19.    INDEX Cond: (((username)::text = 'ale600'::text) AND ((resource)::text = 'sistema'::text))
  20. (2 filas)
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 02/02/2010, 09:36
 
Fecha de Ingreso: febrero-2010
Ubicación: Argentina
Mensajes: 3
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: no me usa el indice consulta basica

no me acuerdo en que momento lo cree, pero puede tener algo que ver eso? cual seria el problema? muchas gracias por la rapida respuesta. puede ser que el optimizador este activo y no considere el uso del indice?
  #4 (permalink)  
Antiguo 02/02/2010, 09:44
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: no me usa el indice consulta basica

La verdad fue lo primero que se me ocurrió preguntarte ya que es el mismo código. Pero parece que no tiene que ver en nada. Hice la prueba creando el constraint aparte y sigue bien.

cualquier idea te aviso
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: indice
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 20:25.