hitokiri
el concepto de indices parciales es basicamente el mismo de los indices convencionales a diferencia que su uso lo delimita una condición.
Si quieres indexar un campo en el cual una gran parte de los registros, sería mas engorroso hacer la busqueda mediante indices, pero otra sección de registros te agilizaría mucho el trabajo, el uso de indices parciales sería ideal.
Por ejemplo, en un banco... si los clientes con mas de 100.000 dolares son aquellos que mas transacciones realizan y la repetición del campo indexado es muy repetitivo para ese cliente, este campo no sería un buen candidato a indexar, pero si los clientes con pocos ingresos tienen pocas transacciones, este podría ser un buen candidato para indexar. Como todos estan en la misma tabla, los indices convencionales indexan todo el campo o no indexan nada. Aca es donde los indices parciales toman cierta aplicación en la vida real.
Mira el ejemplo que utilizan en la documentación oficial
Cita: CREATE TABLE access_log (
url varchar,
client_ip inet,
...
);
To create a partial index that suits our example, use a command such as this:
CREATE INDEX access_log_client_ip_ix ON access_log (client_ip)
WHERE NOT (client_ip > inet '192.168.100.0' AND client_ip < inet '192.168.100.255');
A typical query that can use this index would be:
SELECT * FROM access_log WHERE url = '/index.html' AND client_ip = inet '212.78.10.32';
A query that cannot use this index is:
SELECT * FROM access_log WHERE client_ip = inet '192.168.100.23';
tomado de
http://www.postgresql.org/docs/8.0/s...s-partial.html
saludos