Skip site navigation (1) Skip section navigation (2)

Re: [pgsql-es-ayuda] Duda acerca de la búsqueda por índice

From: Alejandro Carrillo <fasterzip(at)yahoo(dot)es>
To: Daymel Bonne Solís <dbonne(at)uci(dot)cu>
Cc: SQL Ayuda Postgre <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [pgsql-es-ayuda] Duda acerca de la búsqueda por índice
Date: 2012-02-27 13:09:14
Message-ID: 1330348154.28809.YahooMailNeo@web27406.mail.ukl.yahoo.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Porque el motor de PostgreSQL (al igual que el de Oracle), cuando el indice es compuesto, hace una busqueda, usando el indice, por el primer y por el segundo campo o solo por el primer campo. Es decir para usar tu indice debes buscar por todos los campos del indice o solo por el primero.




>________________________________
> De: Daymel Bonne Solís <dbonne(at)uci(dot)cu>
>Para: pgsql-es <pgsql-es-ayuda(at)postgresql(dot)org> 
>Enviado: Sábado 25 de febrero de 2012 17:28
>Asunto: [pgsql-es-ayuda] Duda acerca de la búsqueda por índice
> 
>Hola
>
>Tengo una duda de cuando postgres realiza una búsqueda por índice.
>
>test=# \d foo
>        Tabla «public.foo»
>Columna |  Tipo   | Modificadores 
>---------+---------+---------------
>unique1 | integer | 
>unique2 | integer | 
>�ndices:
>    "fooi" btree (unique1, unique2)
>
>Si realizo una búsqueda filtrando por la columna unique2 realiza una
>búsqueda secuencial.
>
>test=# explain select * from foo where unique2 in (1,2,3);
>                     QUERY PLAN                      
>-----------------------------------------------------
>Seq Scan on foo  (cost=0.00..182.50 rows=3 width=8)
>   Filter: (unique2 = ANY ('{1,2,3}'::integer[]))
>(2 filas)
>
>Sin embargo si filtro por la columna unique1 la búsqueda se realiza por
>índice.
>
>test=# explain select * from foo where unique1 in (1,2,3);
>                              QUERY PLAN                              
>----------------------------------------------------------------------
>Index Only Scan using fooi on foo  (cost=0.00..20.32 rows=3 width=8)
>   Index Cond: (unique1 = ANY ('{1,2,3}'::integer[]))
>(2 filas)
>
>¿Porqué ambas búsquedas no realizan utilizando el índice?
>
>Saludos.
>
>
>
>Fin a la injusticia, LIBERTAD AHORA A NUESTROS CINCO COMPATRIOTAS QUE SE ENCUENTRAN INJUSTAMENTE EN PRISIONES DE LOS EEUU!
>http://www.antiterroristas.cu
>http://justiciaparaloscinco.wordpress.com
>-
>Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
>Para cambiar tu suscripción:
>http://www.postgresql.org/mailpref/pgsql-es-ayuda
>
>
>

In response to

pgsql-es-ayuda by date

Next:From: Robert J. Briones C.Date: 2012-02-27 20:07:33
Subject: Error INSERT INTO tabla SELECT tabla...
Previous:From: Jaime CasanovaDate: 2012-02-26 17:07:47
Subject: Re: pgstartup.log pesa 12GB

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group