Buscar..


Introducción

Aquí explicaré diferentes índices usando ejemplos, cómo el índice aumenta el rendimiento de las consultas, cómo el índice disminuye el rendimiento del DML, etc.

índice de árbol b

CREATE INDEX ord_customer_ix ON orders (customer_id);

Por defecto, si no mencionamos nada, Oracle crea un índice como un índice B-tree. Pero debemos saber cuándo usarlo. El índice de árbol B almacena los datos como formato de árbol binario. Como sabemos, el índice es un objeto de esquema que almacena algún tipo de entrada para cada valor para la columna indexada. Por lo tanto, siempre que se realice una búsqueda en esas columnas, verifica en el índice la ubicación exacta de ese registro para acceder rápidamente. Algunos puntos sobre la indexación:

  • Para buscar una entrada en el índice, se utiliza algún tipo de algoritmo de búsqueda binario.
  • Cuando la cardinalidad de los datos es alta, el índice b-tree es perfecto para usar.
  • El índice hace que el DML sea lento, ya que para cada registro, debe haber una entrada en el índice para la columna indexada.
  • Por lo tanto, si no es necesario, deberíamos evitar crear índices.

Índice de mapa de bits

CREATE BITMAP INDEX 
emp_bitmap_idx
ON index_demo (gender);
  • El índice de mapa de bits se utiliza cuando la cardinalidad de los datos es baja.
  • Aquí, el género tiene valor con baja cardinalidad. Los valores pueden ser masculinos, femeninos y otros.
  • Por lo tanto, si creamos un árbol binario para estos 3 valores mientras lo buscamos, tendremos un recorrido innecesario.
  • En las estructuras de mapa de bits, se crea una matriz bidimensional con una columna para cada fila de la tabla que se está indexando. Cada columna representa un valor distinto dentro del índice de mapa de bits. Esta matriz bidimensional representa cada valor dentro del índice multiplicado por el número de filas en la tabla.
  • En el momento de la recuperación de la fila, Oracle descomprime el mapa de bits en los buffers de datos de RAM para que pueda escanearse rápidamente en busca de valores coincidentes. Estos valores coincidentes se entregan a Oracle en forma de una lista de ID de fila, y estos valores de ID de fila pueden acceder directamente a la información requerida.

Índice basado en funciones

CREATE INDEX first_name_idx ON user_data (UPPER(first_name));


SELECT *
FROM   user_data
WHERE  UPPER(first_name) = 'JOHN2';
  • El índice basado en la función significa crear un índice basado en una función.
  • Si en la búsqueda (donde la cláusula), con frecuencia se utiliza cualquier función, es mejor crear un índice basado en esa función.
  • Aquí, en el ejemplo, para búsqueda, se está utilizando la función Upper () . Por lo tanto, es mejor crear un índice utilizando la función superior.


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow