Colección de citas famosas - Frases motivadoras - ¿Qué tipos de índices de bases de datos existen? ¿Cómo crear un índice?

¿Qué tipos de índices de bases de datos existen? ¿Cómo crear un índice?

Tipo:

1. Según la unicidad del valor de la columna del índice, el índice se puede dividir en índice único e índice no único;

Índice no único:

En la tabla ¿Crear un índice en el espacio de tabla con el nombre del índice (nombre de columna)? Nombre del espacio de tabla;

Índice único:

Al crear una clave principal o una restricción única, se creará automáticamente un índice único en la columna correspondiente;

2 Número de columna de índice: índice de una sola columna e índice compuesto;

3. Según la organización física de la columna de índice.

Formato de creación de índice:?

¿Crear? único. |?Mapa de bits? ¿índice? <Arquitectura>. <index_name>? ¿Abierto? <Arquitectura>. <Nombre de la tabla>? (<column_name》?|?<expression>?ASC?|?DESC,<column_name》?|?<expression>?ASC?|?DESC,...)?tablespace? <Nombre del espacio de tabla>? ¿almacenamiento? <Configuración de almacenamiento>? ¿Explotación florestal? |?¿Sin registro? ¿calcular? ¿estadística? ¿Sin presión? |?compresión<nn>? ¿NO ORDENAR? |?¿Reversa? ¿Dividir? |?A nivel mundial? Partición <partition_setting>Utilice USER_IND_COLUMNS para consultar el establecimiento del índice de campo correspondiente en la tabla.

Utilice DBA_INDEXES/USER_INDEXES para consultar la configuración específica de todos los índices.

Los índices en Oracle se pueden dividir en: índice de árbol B, índice de mapa de bits, índice de clave inversa, índice basado en funciones, índice de clúster, índice global, índice local, etc. Lo siguiente se explica uno por uno:

1. Índice de árbol B:

En el índice más utilizado, los datos contenidos en cada nodo hoja incluyen el valor de la columna del índice. y la fila correspondiente en la tabla de datos rowids. En pocas palabras, en un índice de árbol B, el propósito de la consulta rápida se logra guardando los valores de las columnas del índice y los ID de fila de los registros correspondientes en el índice. Su estructura lógica es la siguiente:

Se puede garantizar que no importa en qué rama del nodo hoja quiera buscar el usuario, debe pasar por el mismo nivel de índice, es decir, todos requieren el mismo número de E/S.

Ejemplo de creación de un índice de árbol B:

¿Crear índice ind_t en t 1 (id)? ;

Nota 1: Los índices se crean para los campos y no se pueden crear varios índices para el mismo campo.

Nota 2: El índice predeterminado no es único, pero también se puede agregar único, lo que indica que no hay valores duplicados en los campos indexados (se creará automáticamente al definir restricciones únicas); /p>

Nota 3: Al crear una clave principal, se crea un índice de árbol B en la clave principal de forma predeterminada, por lo que no se pueden crear más índices en la clave principal.

2. Índice de mapa de bits:

La eficiencia del uso del índice de árbol B en algunas áreas aún no es alta. Por ejemplo, si solo hay dos valores en el campo de género, "Masculino y Femenino", se devolverán casi la mitad de los registros durante la búsqueda incluso si se utiliza un índice de árbol B.

Entonces, cuando la cardinalidad de un campo es muy baja, es necesario utilizar un índice de mapa de bits. (El estándar "bajo" es el número de valores

La estructura lógica del índice de mapa de bits es como se muestra en la figura anterior: los valores de ID de fila y clave ya no se registran en el índice. pero cada valor se trata como una columna, con 0 y 1 para indicar si la fila es igual al valor clave (0 significa no; 1 significa sí. Entre ellos, el orden de las filas del índice del mapa de bits es consistente con el orden de las filas). de la tabla original, por lo que la física original del viaje se puede calcular en consecuencia durante la consulta de datos.

Ejemplo de creación de un índice de mapa de bits:

Cree un índice de mapa de bits ind_t. t1 (tipo);

Nota: Los índices de mapa de bits no pueden. Es el único índice y no se puede comprimir junto con el valor clave.

3. p> Considere esta situación: el valor de un campo es 1-1000 en secuencia. Una vez establecido el índice del árbol B, el valor seguirá aumentando y luego el índice del número B continuará agregando ramas más adelante, que se formarán. un árbol asimétrico, como se muestra a continuación:

El índice de clave inversa es un índice de árbol B especial, que es exactamente el mismo que el índice de árbol B en la estructura de almacenamiento.

Sin embargo, para valores numéricos, la indexación de clave inversa primero invertirá los bytes de cada valor de clave y luego indexará los nuevos datos después de la inversión. Por ejemplo, la entrada 2008 se convierte a 8002, por lo que cuando el valor se incrementa una vez, la distribución de tamaño de las claves inversas permanece relativamente uniforme.

Ejemplo de creación de un índice de clave inversa:

¿Crear? t 1(id) índice inverso ind_t;

Nota: la inversión de claves la realiza el propio sistema. Transparente para los usuarios.

Cuarto índice basado en funciones:

A veces, se requiere la siguiente consulta: seleccione * de t 1 dónde _ char (fecha, 'yyyy')》'2007';

Sin embargo, incluso si se crea un índice en el campo de fecha, se debe escanear toda la tabla. En este caso, se puede utilizar la indexación basada en funciones. La sintaxis de creación es la siguiente:

Crear índice ind_t(to_char(date,'yyyy')) en t1;

Nota: En pocas palabras, índice basado en funciones Se refiere al uso la expresión que se utilizará en la consulta como elemento de índice.

Verbo (abreviatura de verbo) índice global e índice local:

Este índice puede parecer complicado, pero en realidad es muy sencillo. En resumen, no importa cuán divididas estén, todo es para la conveniencia de la administración.

Existen tres relaciones entre índices y tablas específicos:

1. Índice de partición local: índice de partición y tabla de partición 1 a 1.

2. Índice de partición global: el índice de partición y la tabla de particiones son n an.

3. Índice global no particionado: índice no particionado y tabla particionada 1 a n.

Crea un ejemplo:

Primero, crea la tabla de particiones

¿Crear? Tabla Estudiante

(

Número de Stuno (5),

nombre VRV har 2 (10),

Número de depósito (5)

)

Partición hash (deptno)

(

espacio de tabla part_01 A1,

Tabla de partición part_02 espacio A2

);

Crear índice de partición local (1v1):

Crear índice para estudiantes (stuno)

Local (

espacio de tabla part_01 A2,

Partición espacio de tabla part_02 A1

);? -Local se puede ignorar.

Crear índice de partición global (NvN):

Crear índice en estudiante (stuno)

¿Globalmente? Dividir por rango (stuno)

(

El valor de la partición p1 es menor que (1000) espacio de tabla A1,

El valor de la partición p2 es menor que (valor máximo) espacio de tabla A2

);? -Solo se puede realizar la partición de rango.

Crear un índice global no particionado (1vN)

¿Crear? Índice global de estudiante (stuno) ind_t;

Según el tipo específico de problema, realice el desmontaje de pasos/análisis de razones y principios/expansión de contenido, etc.

Los pasos específicos son los siguientes:/El motivo principal de esta situación es