Buenos dias:

2015-10-22 22:44 GMT+02:00 Igniris Valdivia <ivaldi...@xetid.cu>:
> tengo un indice btree que contiene dos campos digamos id1 e id2 pues se debe
> garantizar la unicidad de la combinacion de estos campos
> ahora en la consulta donde la uso se usan los operadores igual e IN como por
> ejemplo:
>
> id1=id3 AND id2 IN (1,2,3)
>
> y como el indice es compuesto la busqueda del IN la hace secuencial
> que pudiera hacer para arreglar eso sin tener que crear un nuevo indice solo
> para el capo id2 pues considero que esto ralentizaria aun mas la consulta en
> lugar de optimizarla

Como ya te han dicho, un explain analyze ayudaria. Añadire que ademas
la definicion real de las tablas/indices es necesaria, el optimizador
es un bicho complicado y diferencias pequeñas en las definciones
pueden dar grandes diferencias en los resultados.

¿ Cuando dices que la busqueda la hace secuencial a que te refieres
exactamente ? ¿ Secuencial en el resultado de buscar id1, en toda la
tabla ?

Dicho esto, en general un indice por (id1, id2) te vale para buscar
por id1 o por ambos, pero no por id2. En tu caso puede que el
opitmizador no llegue a entender todo el query, y a veces puedes
mejorarlo pidiendo (id1=id2) and (id2=1 or id2=2 or id2=3), todo es
cuestion de probar.

Francisco Olarte.

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a