Índice parcial - Partial index

En las bases de datos , un índice parcial , también conocido como índice filtrado, es un índice al que se le aplica alguna condición para que incluya un subconjunto de filas en la tabla .

Esto permite que el índice siga siendo pequeño, aunque la tabla sea bastante grande y tenga una selectividad extrema.

Suponga que tiene una tabla de transacciones donde las entradas comienzan con STATUS = 'A' (activo), y luego pueden pasar por otros estados ('P' para pendiente, 'W' para "en proceso") antes de alcanzar un estado final, 'F', momento en el que ya no es probable que se vuelva a procesar.

En PostgreSQL, un índice parcial útil podría definirse como:

create index partial_status on txn_table (status) 
where status in ('A', 'P', 'W');

Este índice no se molestaría en almacenar ninguno de los millones de filas que han alcanzado el estado "final", 'F', y permitiría que las consultas que buscan transacciones que aún "necesitan trabajo" busquen de manera eficiente a través de este índice.

De manera similar, se puede usar un índice parcial para indexar solo aquellas filas donde una columna no es nula, lo que será beneficioso cuando la columna generalmente sea nula.

create index partial_object_update on object_table (updated_on) 
where updated_on is not null;

Este índice permitiría que la siguiente consulta lea solo las tuplas actualizadas:

select * from object_table 
where updated_on is not null 
order by updated_on;

No es necesario que la condición sea la misma que el criterio del índice; El artículo de Stonebraker a continuación presenta una serie de ejemplos con índices similares a los siguientes:

create index partial_salary on employee(age) 
where salary > 2100;

Apoyo

En SQL Server , este tipo de índice se denomina índice filtrado . Índices parciales han sido apoyados en PostgreSQL desde la versión 7.2, publicado en febrero de 2002. SQLite apoya índices parciales desde la versión 3.8.0.

MongoDB admite índices parciales en su última versión V3.2.

MySQL a partir de la versión 8.0 no admite índices parciales. En MySQL, el término "índice parcial" se utiliza a veces para referirse a índices de prefijo, donde sólo se almacena en el índice un prefijo truncado de cada valor. Esta es otra técnica para reducir el tamaño del índice.

Referencias

enlaces externos