Cómo crear un índice en Oracle y cuándo usar bitmap
Un índice acelera búsquedas pero cuesta espacio y ralentiza escrituras. Elegir el tipo correcto importa tanto como crearlo.
- 1
Crea un índice B-tree
Es el índice por defecto y sirve para la mayoría de consultas por igualdad o rango.
CREATE INDEX idx_pedidos_cliente ON pedidos (cliente_id); - 2
Índices compuestos para filtros combinados
Ordena las columnas según cómo filtra la consulta; la más selectiva o la usada en igualdad suele ir primero.
CREATE INDEX idx_pedidos_cli_fecha ON pedidos (cliente_id, fecha); - 3
Usa bitmap solo en baja cardinalidad
Bitmap conviene en columnas con pocos valores distintos y cargas de solo lectura o DWH. En OLTP con escrituras concurrentes causa bloqueos serios.
CREATE BITMAP INDEX idx_pedidos_estatus ON pedidos (estatus); - 4
Reúne estadísticas
El optimizador necesita estadísticas frescas para decidir usar el índice.
EXEC DBMS_STATS.GATHER_TABLE_STATS('VENTAS','PEDIDOS'); - 5
Verifica que el índice se use
Revisa el plan de ejecución. Un índice que nadie usa solo pesa en las escrituras.
EXPLAIN PLAN FOR SELECT * FROM pedidos WHERE cliente_id = 100; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
// el error común
Un índice bitmap en una tabla OLTP con inserciones o updates concurrentes bloquea rangos completos de filas y degrada el rendimiento.
// cuándo conviene un experto
Si tienes muchos índices y no sabes cuáles ayudan o si las consultas siguen lentas pese a indexar, vale la pena un análisis. En dba.mx afinamos indexación con techo cerrado.
Agenda un Escaneo — desde USD $550Esta guía es orientativa y usa comandos de referencia. En producción, adapta a tu versión y prueba en un ambiente seguro primero.