sql >> Base de Datos >  >> RDS >> Oracle

Índices de Oracle y tipos de índices en Oracle con ejemplo

Discutiremos los índices/tipos de índices de Oracle en Oracle con un ejemplo en esta publicación. Explicaré todas las opciones sobre cómo crear un índice en Oracle. También discutiré cómo verificar el tamaño del índice en Oracle. Espero que te guste esta publicación. Esperaré con ansias comentarios sobre esta publicación

¿Qué son los índices de Oracle?

  • Al igual que tenemos el índice presente en los libros de texto para ayudarnos a encontrar el tema particular en el libro, el índice de Oracle se comporta de la misma manera. Tenemos diferentes tipos de índices en Oracle.
  • Los índices se utilizan para buscar filas en la tabla de Oracle rápidamente. Si el índice no está presente, la consulta de selección debe leer toda la tabla y devolver las filas. Con Index, las filas se pueden recuperar rápidamente
  • Deberíamos crear índices al recuperar un pequeño número de filas de una tabla. o para recuperar el primer conjunto de filas lo más rápido posible de alguna consulta que finalmente devolverá una gran cantidad de filas. También depende de la distribución de datos, es decir, el factor de agrupación
  • Los índices son lógica y físicamente independientes de los datos en la tabla asociada.
  • Los índices son estructuras opcionales asociadas con tablas y clústeres. Puede crear índices en una o más columnas de una tabla para acelerar la ejecución de sentencias SQL en esa tabla.
  • Los índices son el medio principal para reducir la E/S del disco cuando se usan correctamente.
  • La consulta decide al principio si usar índice o no
  • Lo mejor de los índices es que el rendimiento de recuperación de datos indexados permanece casi constante, incluso cuando se insertan nuevas filas. Sin embargo, la presencia de muchos índices en una tabla disminuye el rendimiento de las actualizaciones, eliminaciones e inserciones porque Oracle también debe actualizar los índices asociados con la tabla.
  • Si es  el propietario de la tabla, puede crear un índice  o si desea crear un índice para la tabla en otro esquema, debe tener el privilegio del sistema  CREATE ANY INDEX o el privilegio de índice en esa tabla

Tipo lógico de índices

Define las características de aplicación del Índice

Único o no único Un índice puede ser único o no único. Oracle crea un índice único para la clave principal y restricciones de clave única
Si ya hay índices no únicos en esa columna, no creará un nuevo índice único para la clave principal en Oracle
Compuesto El índice puede estar compuesto por una o varias columnas. Los índices compuestos pueden acelerar la recuperación de datos para instrucciones SELECT en las que la cláusula WHERE hace referencia a todas las columnas o a la parte inicial de las columnas en el índice compuesto.
Índices basados ​​en funciones Los datos de la columna indexada se basan en un cálculo
Índices de dominio de aplicación Este índice se utiliza en aplicaciones especiales (espacial, texto).

¿Qué es la pseudocolumna ROWID

ROWID devuelve la dirección de cada fila de la tabla. Oracle asigna un ROWID a cada fila.ROWID consiste en seguir

  • El número de objeto de datos del objeto
  • El bloque de datos en el archivo de datos en el que reside la fila
  • La posición de la fila en el bloque de datos (la primera fila es 0)
  • El archivo de datos en el que reside la fila (el primer archivo es 1). El número de archivo es relativo al tablespace.

Oracle usa ROWID internamente para acceder a las filas. Por ejemplo, Oracle almacena ROWID en el índice y lo usa para acceder a la fila en la tabla.

Puede mostrar el ROWID de las filas con el comando SELECCIONAR de la siguiente manera:

seleccione ID de fila, emp_name de emp;

ROWID EMP_NOMBRE

AAADC576474722aSAAA   Juan

Oracle proporciona un paquete llamado DBMS_ROWID para decodificar ROWID.

Una vez que se asigna un ROWID a una fila, Oracle no cambia el ROWID durante la vigencia de la fila. Pero cambia cuando se reconstruye la tabla Cuando las filas se mueven a través de la partición o se reduce la tabla

Tipos de índices en Oracle con ejemplo

Hay 6 tipos diferentes de índices en Oracle

(1) Árbol B

(2) Árbol B comprimido

(3) mapa de bits

(4) Basado en funciones

(5) Tecla inversa (RKI)

(6) Tabla organizada de índices (IOT).

Descubramos cada uno de ellos en detalle y cómo crear un índice en Oracle para cada uno de estos tipos

B – Índice de árbol:

  • Los índices B-Tree (árbol equilibrado) son el tipo de índice más común.
  • El índice B-Tree almacenó el ROWID y el valor de la clave del índice en una estructura de árbol.
  • Al crear un índice, se crea un bloque ROOT, luego se crean bloques BRANCH y finalmente bloques LEAF.
  • Cada rama contiene el rango de datos que contienen sus bloques hoja, y cada raíz contiene el rango de datos que contienen sus ramas:
  • Los índices B-Tree son más útiles en las columnas que aparecen en la cláusula where (SELECT... WHERE EMPNO=1).
  • El servidor de Oracle mantiene el árbol equilibrado dividiendo los bloques de índice cuando se insertan nuevos datos en la tabla.
  • Cada vez que se realiza una declaración DML en la tabla del índice, se produce actividad en el índice, lo que hace que el índice crezca (agregue hojas y ramas).

Ventajas

  • Todos los bloques de hojas del árbol están a la misma profundidad.
  • Los índices de árbol B se mantienen equilibrados automáticamente.
  • Todos los bloques del árbol B están llenos en tres cuartas partes en promedio.
  • Los árboles B proporcionan un rendimiento de recuperación excelente para una amplia gama de consultas, incluidas las búsquedas de rango y de coincidencia exacta.
  • Las inserciones, actualizaciones y eliminaciones son eficientes y mantienen el orden de las claves para una recuperación rápida.
  • El rendimiento del árbol B es bueno tanto para tablas pequeñas como grandes, y no se degrada a medida que crece el tamaño de la tabla.
CREATE <UNIQUE|NON UNIQUE>  INDEX <index_name>
ON <table_name> (<column_name>,<column_name>…)
TABLESPACE <tablespace_name>;

Example
Create index   scott.exp_idx   on table scott.example(  name)
Tablespace TOOLS;

Qué son los índices de árbol B comprimidos

  • Los índices B-Tree comprimidos se crean en tablas grandes, en un entorno de almacenamiento de datos. En este tipo de índice, se eliminan las ocurrencias duplicadas del mismo valor, lo que reduce la cantidad de espacio de almacenamiento que requiere el índice.
  • En un índice B-Tree comprimido, para cada valor clave, se mantiene una lista de ROWID
  • Especificar la palabra clave COMPRESS al crear un índice (CREATE INDEX... COMPRESS) creará un índice B-Tree comprimido.
  • Se puede reconstruir un índice B-Tree regular usando la palabra clave COMPRESS para comprimirlo.
CREATE <UNIQUE|NON UNIQUE>  INDEX <index_name>
ON <table_name> (<column_name>,<column_name>…)
PCTFREE <integer>
TABLESPACE <tablespace_name>
Compress  <column number>

Qué son los índices de mapa de bits

  • Los índices de mapa de bits son más apropiados en datos de cardinalidad distinta baja (a diferencia de los índices B-Tree).
  • Este tipo de índice crea un mapa binario de todos los valores de índice y almacena ese mapa en los bloques de índice, lo que significa que el índice requerirá menos espacio que el índice B-Tree.
  • Cada bit en el mapa de bits corresponde a un ID de fila posible. Si el bit está establecido, significa que la fila con el ID de fila correspondiente contiene el valor clave. Una función de asignación convierte la posición del bit en un ID de fila real, por lo que el índice de mapa de bits proporciona la misma funcionalidad que un índice normal, aunque internamente utiliza una representación diferente. Si el número de valores clave diferentes es pequeño, los índices de mapa de bits son muy eficientes en cuanto al espacio
  • Cuando hay índices de mapa de bits en las tablas, las actualizaciones eliminarán los bloqueos completos de la tabla. Por lo tanto, el índice de mapa de bits es útil en columnas grandes con poca actividad de DML (actualizaciones poco frecuentes) o tablas de solo lectura. Esta es la razón por la que a menudo encuentra que los índices de mapa de bits se usan ampliamente en el entorno de almacenamiento de datos (DWH).
  • La estructura del índice de mapa de bits contiene un mapa de bits que indica el valor en la columna, por ejemplo, para la columna GÉNERO, el bloque de índice contendrá el ROWID inicial, el ROWID final y el mapa de bits:
  • Los índices de mapa de bits son muy útiles cuando se crean en columnas con baja cardinalidad, se usan con el operador AND &OR en la condición de consulta:
CREATE BITMAP  INDEX <index_name>
ON <table_name> (<column_name>,<column_name>…)
PCTFREE <integer>
TABLESPACE <tablespace_name>

Ejemplo

CREATE BITMAP INDEX ON emp_data(gender);
SELECT COUNT(*) FROM emp_data
WHERE GENDER=’M”;

Ventajas de los índices de mapa de bits

  • Tiempo de respuesta reducido para grandes clases de consultas
  • Una reducción sustancial del uso del espacio en comparación con otras técnicas de indexación
  • Impresionantes ganancias de rendimiento incluso en hardware de gama muy baja
  • Cargas y DML paralelos muy eficientes

Índices basados ​​en funciones

Los índices basados ​​en funciones son índices creados en columnas a las que normalmente se les aplica una función.

Cuando se usa una función en una columna indexada, el índice se ignora, por lo tanto, un índice basado en funciones es muy útil para estas operaciones.

CREATE INDEX <index_name>
ON <table_name> [ Function(<column_name>,<column_name.)]
TABLESPACE <tablespace_name>;

Example
CREATE INDEX EMP_IDX on EMP(UPPER(ENAME));
SELECT *
FROM Emp
WHERE UPPER(Ename) like ‘JOHN`;

¿Qué son los índices de clave inversa?

  • Son tipos especiales de índices B-Tree y son muy útiles cuando se crean en columnas que contienen números secuenciales.
  • Cuando se usa un B-Tree normal, el índice crecerá para tener muchas ramas y quizás varios niveles, lo que provocará una degradación del rendimiento. El RKI resuelve el problema invirtiendo los bytes de cada clave de columna e indexando los nuevos datos.
  • li>
  • Este método distribuye los datos uniformemente en el índice. La creación de un RKI se realiza mediante la palabra clave REVERSE:CREATE INDEX... ON... REVERSE;
CREATE INDEX <index_name>
ON <table_name> (<column_name>)
TABLESPACE <tablespace_name>
REVERSE;

Example

CREATE INDEX emp_idx i ON emp_table (firstname,lastname) REVERSE;

¿Qué son las tablas organizadas de índices (IOT)?

  • Cuando usamos B-Tree, los índices de mapa de bits y clave inversa se usan para tablas que almacenan datos de forma desordenada (tablas heap).
  • Estos índices contienen la ubicación del ROWID de la fila de la tabla requerida, lo que permite el acceso directo a los datos de la fila
  • Una tabla organizada por índices difiere de una tabla ordinaria porque los datos de la tabla se mantienen en su índice asociado. Los cambios en los datos de la tabla, como agregar nuevas filas, actualizar filas o eliminar filas, dan como resultado la actualización del índice.
  • La tabla organizada por índices es como una tabla ordinaria con un índice en una o más de sus columnas, pero en lugar de mantener dos almacenamientos separados para la tabla y el índice de árbol B, el sistema de base de datos mantiene solo un único B- índice de árbol que contiene tanto el valor de clave codificado como los valores de columna asociados para la fila correspondiente. En lugar de tener el ID de fila de una fila como segundo elemento de la entrada del índice, la fila de datos real se almacena en el índice del árbol B. Las filas de datos se basan en la clave principal de la tabla, y cada entrada de índice del árbol B contiene . Las tablas organizadas por índices son adecuadas para acceder a los datos mediante la clave principal o cualquier clave que sea un prefijo válido de la clave principal.
  • No hay duplicación de valores clave porque solo los valores de columna que no son clave se almacenan con la clave. Puede crear índices secundarios para proporcionar acceso eficiente a otras columnas. Las aplicaciones manipulan la tabla organizada por índices como una tabla ordinaria, utilizando sentencias SQL. Sin embargo, el sistema de la base de datos realiza todas las operaciones manipulando el índice del árbol B correspondiente.

Características de la tabla organizada de Index

  • La clave principal identifica de forma única una fila; se debe especificar la clave principal
  • Acceso basado en clave principal
  • El ID de fila lógico en la pseudocolumna ROWID permite crear índices secundarios
  • No se permite la restricción ÚNICA, pero se permiten activadores
  • No se puede almacenar en un clúster
  • Puede contener columnas LOB pero no columnas LONG
  • Distribución y replicación no admitidas


CREATE TABLE command:

CREATE TABLE …

ORGANIZATION INDEX TABLESPACE … (specify this is an IOT)

PCTTHRESHOLD … (specify % of block to hold in order to store row data, valid 0-50 (default 50))

INCLUDING … (specify which column to break a row when row length exceeds PCTTHRESHOLD) OVERFLOW TABLESPACE … (specify the tablespace where the second part of the row will be stored) MAPPING TABLE; (cause creation of a mapping table, needed when creating Bitmap index on IOT)

La tabla de mapeo asigna los ROWID físicos del índice a los ROWID lógicos en el IOT. IOT usa ROWID lógicos para administrar el acceso a la tabla por índice porque los ROWID físicos se cambian cada vez que se agregan o eliminan datos de la tabla. Para distinguir el IOT de otros índices, consulte la vista USER_INDEXES utilizando la columna pct_direct_access. Solo IOT tendrá un valor no NULL para esta columna.

Índices de dominio de aplicación

Oracle proporciona indexación extensible para acomodar índices en tipos de datos complejos, como documentos, datos espaciales, imágenes y videoclips, y para hacer uso de técnicas de indexación especializadas.

Con la indexación extensible, puede encapsular rutinas de administración de índices específicas de la aplicación como un tipo de índice objeto de esquema y definir un índice de dominio (un índice específico de la aplicación) en columnas de tabla o atributos de un tipo de objeto. La indexación extensible también proporciona un procesamiento eficiente del operador específico de la aplicación. s.

El software de la aplicación, denominado cartucho e, controla la estructura y el contenido de un índice de dominio. El servidor de Oracle interactúa con la aplicación para crear, mantener y buscar en el índice del dominio. La estructura del índice en sí se puede almacenar en la base de datos de Oracle como una tabla organizada por índice o externamente como un archivo.

Uso de índices de dominio

Los índices de dominio se construyen utilizando la lógica de indexación proporcionada por un tipo de índice definido por el usuario. Un tipo de índice proporciona un mecanismo eficaz para acceder a datos que satisfacen ciertos predicados de operadores. Normalmente, el tipo de índice definido por el usuario forma parte de una opción de Oracle, como la opción espacial.

Por ejemplo, SpatialIndextype permite una búsqueda y recuperación eficientes de datos espaciales que se superponen a un cuadro delimitador dado.

El cartucho determina los parámetros que puede especificar al crear y mantener el índice de dominio. Del mismo modo, las características de rendimiento y almacenamiento del índice de dominio se presentan en la documentación específica del cartucho.

Hasta ahora hemos cubierto diferentes tipos de índices en Oracle con un ejemplo, veamos ahora cómo modificarlos/eliminarlos/recrearlos

Cómo recrear los Índices/reconstruir el índice en Oracle

Podemos usar la sentencia ALTER INDEX... REBUILD para reorganizar o compactar un índice existente o para cambiar sus características de almacenamiento

La instrucción REBUILD utiliza el índice existente como base para el nuevo.

ALTER INDEX... REBUILD suele ser más rápido que descartar y volver a crear un índice.

Lee todos los bloques de índice utilizando E/S multibloque y luego descarta los bloques de ramificación.

Otra ventaja de este enfoque es que el índice anterior todavía está disponible para consultas mientras la reconstrucción está en curso.

Alter index  <index name>  rebuild ;

Alter index  <index name>  rebuild  tablespace <name>;

Cómo escribir declaraciones que eviten el uso de índices

  • Puede usar la sugerencia del optimizador NO_INDEX para brindarle a la CBO la máxima flexibilidad mientras no permite el uso de un índice determinado.
  • Puede usar la sugerencia FULL para obligar al optimizador a elegir un escaneo de tabla completo en lugar de un escaneo de índice.
  • Puede usar las sugerencias INDEX, INDEX_COMBINE o AND_EQUAL para obligar al optimizador a usar un índice o un conjunto de índices enumerados en lugar de otro.

Cómo recopilar estadísticas para índices

Las estadísticas del índice se recopilan mediante la declaración ANALYZE INDEX o dbms_stats.

Las opciones disponibles son CALCULAR/ESTIMAR ESTADÍSTICAS o VALIDAR ESTRUCTURA.

Desde 10g en adelante, cuando se crea el índice, las estadísticas de cálculo se realizan automáticamente

Cuando se utiliza la estructura de validación, Oracle completa la vista INDEX_STATS con estadísticas relacionadas con el índice analizado. Las estadísticas contienen el número de filas y bloques de hojas (LF_ROWS, LF_BLKS), el número de filas y bloques de ramas (BR_ROWS, BR_BLKS), el número de filas de hojas eliminadas (DEL_LF_ROWS), el espacio utilizado (USED_SPACE), el número de claves distintas (DISTINCT_KEYS) , etc. Estas estadísticas se pueden usar para determinar si el  índice debe reconstruirse o no

¿Cómo decide Oracle sobre el uso del índice?

Oracle decide automáticamente si el motor de Optimizer debe utilizar el índice.

Oracle decide si usar un índice o no dependiendo de la consulta.

Oracle puede comprender si el uso de un índice mejorará el rendimiento en la consulta dada. Si Oracle cree que usar un índice mejorará el rendimiento, usará el índice; de ​​lo contrario, lo ignorará.

Entendamos con este ejemplo

Tenemos una tabla emp   que contiene emp_name, salario, dept_no, emp_no, date_of_joining y tenemos un índice en emp_name

Consulta 1

select * from emp  where emp_name = 'John';

La consulta anterior usará el índice ya que estamos tratando de obtener información sobre un emp en función del nombre.

Consulta 2

select * from emp;

La consulta anterior no usará el índice ya que estamos tratando de encontrar todas las filas en la tabla y no tenemos la cláusula where en la consulta

Consulta 3

select * from emp where dept_no =5;

La consulta anterior no usará el índice ya que la cláusula where no selecciona la columna que tiene un índice

Consulta 4

select * from emp where substr(emp_name,1,4) =’XYZW’;

La consulta anterior no usará el índice ya que la cláusula where usa la función en la columna y no tenemos un índice funcional en emp_name

¿Cómo crear o reconstruir el índice en línea?

Oracle solía bloquear la tabla en la que se crea el índice durante todo el proceso de creación en versiones anteriores. Esto hace que la tabla no esté disponible para la manipulación de datos durante la creación del índice.

Ahora, con 8i, Oracle introdujo la reconstrucción en línea del índice donde Oracle no bloquea la tabla en la que se está construyendo el índice.

La indexación en línea se proporciona a través de la palabra clave EN LÍNEA.

CREATE <UNIQUE|NON UNIQUE>  INDEX <index_name>
ON <table_name> (<column_name>,<column_name>…)
PCTFREE <integer>
TABLESPACE <tablespace_name>
Online;

Alter index <index name> rebuild online;

Básicamente, con una reconstrucción en línea, Oracle bloquea la tabla al principio y al final de la creación del índice. Permite transacciones intermedias. Se ha mejorado bastante el mecanismo con 11g y 12c

¿Cuáles son los inconvenientes de los  índices

Los índices aumentan el rendimiento de una consulta de selección, también pueden disminuir el rendimiento de la manipulación de datos.

Muchos índices en una tabla pueden ralentizar las INSERCIONES y ELIMINACIONES drásticamente

Cuantos más índices haya en la tabla, más tiempo llevará insertar y eliminar.

De manera similar, cada cambio en una columna indexada necesitará un cambio en el índice.

Por lo tanto, debemos elegir el índice con mucho cuidado y descartar los que no están en uso.

Aunque el espacio adicional que ocupan los índices también es una consideración, puede que no importe mucho ya que el costo del almacenamiento de datos se ha reducido sustancialmente.

Qué son los índices inutilizables

El optimizador ignora un índice inutilizable al decidir el plan de explicación

Tampoco es mantenido por DML, es decir, actualizar, insertar, eliminar actualiza el índice

Puede haber varias razones por las que el índice se encuentra en un estado inutilizable. Hizo la reconstrucción de la tabla pero no reconstruyó el índice, entonces el índice estará en un estado inutilizable. Otra razón para inutilizar un índice es mejorar el rendimiento de la carga masiva. Otra razón podría ser que el optimizador recoja el índice incorrecto cada vez y el tiempo es crítico, por lo que puede decidir dejarlo inutilizable

Un índice inutilizable o una partición de índice se debe reconstruir o eliminar y volver a crear antes de poder utilizarlo. Truncar una tabla hace que un índice inutilizable sea válido.

A partir de Oracle Database 11g versión 2, cuando inutiliza un índice existente, su segmento de índice se descarta.

La funcionalidad de los índices inutilizables depende de la configuración del parámetro de inicialización SKIP_UNUSABLE_INDEXES.

Cuando SKIP_UNUSABLE_INDEXES es VERDADERO (valor predeterminado), entonces:

Las declaraciones DML contra la tabla continúan, pero los índices inutilizables no se mantienen.

Las declaraciones DML terminan con un error si hay índices inutilizables que se usan para hacer cumplir la restricción ÚNICA.

Para los índices no particionados, el optimizador no considera ningún índice inutilizable al crear un plan de acceso para las declaraciones SELECT. La única excepción es cuando un índice se especifica explícitamente con la sugerencia INDEX().

Cuando SKIP_UNUSABLE_INDEXES es FALSO, entonces:

Si hay presentes índices o particiones de índice inutilizables, cualquier declaración DML que podría causar que esos índices o particiones de índice se actualicen terminará con un error.

Para las declaraciones SELECT, si hay un índice inutilizable o una partición de índice inutilizable pero el optimizador elige no usarlo para el plan de acceso, la declaración continúa. Sin embargo, si el optimizador elige usar el índice inutilizable o la partición de índice inutilizable, la declaración termina con un error.

Vistas del diccionario de datos en índices

DBA_INDEXES ALL_INDEXES USER_INDEXES La vista DBA describe índices en todas las tablas de la base de datos. La vista TODOS describe índices en todas las tablas accesibles para el usuario. La vista de USUARIO está restringida a los índices propiedad del usuario. Algunas columnas de estas vistas contienen estadísticas generadas por el paquete DBMS_STATS o la instrucción ANALYZE.
DBA_IND_COLUMNAS TODAS_IND_COLUMNAS

USUARIO_IND_COLUMNAS

Estas vistas describen las columnas de índices en las tablas. Algunas columnas de estas vistas contienen estadísticas generadas por el paquete DBMS_STATS o la instrucción ANALYZE.
DBA_IND_EXPRESSIONS TODAS_IND_EXPRESSIONS

USUARIO_IND_EXPRESIONES

Estas vistas describen las expresiones de índices basados ​​en funciones en tablas.
DBA_IND_STATISTICS ALL_IND_STATISTICS

USUARIO_IND_ESTADÍSTICAS

Estas vistas contienen estadísticas de optimización para índices.

cómo encontrar índices en una tabla

set pagesize 50000 verify off echo off
col table_name head 'Table Name' format a20
col index_name head 'Index Name' format a25
col column_name head 'Column Name' format a30
break on table_name on index_name
select     table_name, index_name, column_name
from all_ind_columns
where table_name like upper('&Table_Name')
order by table_name, index_name, column_position
/

Cómo determinar el tamaño del índice

Size of INDEX

select segment_name,sum(bytes)/1024/1024/1024 as "SIZE in GB" from user_segments where segment_name='INDEX_NAME' group by segment_name;

OR
select owner,segment_name,sum(bytes)/1024/1024/1024 as "SIZE in GB" from dba_segments where owner='SCHEMA_NAME' and segment_name='INDEX_NAME' group by owner,segment_name;

 

List of Size of all INDEXES of a USER
select segment_name,sum(bytes)/1024/1024/1024 as "SIZE in GB" from user_segments where segment_type='INDEX' group by segment_name order by "SIZE in GB" desc;

OR

select owner,segment_name,sum(bytes)/1024/1024/1024 as "SIZE in GB" from dba_segments where owner='SCHEMA_NAME' and segment_type='INDEX' group by owner,segment_name order by "SIZE in GB" desc;

Sum of sizes of all indexes

select owner,sum(bytes)/1024/1024/1024 as "SIZE in GB" from dba_segments where owner='SCHEMA_NAME' and segment_type='INDEX' group by owner;

Cómo determinar el Índice  definición

set long 4000
select dbms_metadata.get_ddl('INDEX','<INDEX Name>','<INDEX OWNER') from dual;

Cómo determinar las estadísticas del índice

set pages 250
set linesize 100
set verify off
col table_name format a24 heading 'TABLE NAME'
col index_name format a23 heading 'INDEX NAME'
col u format a1 heading 'U'
col blevel format 0 heading 'BL'
col leaf_blocks format 999990 heading 'LEAF|BLOCKS'
col distinct_keys format 9999990 heading 'DISTINCT|KEYS'
col avg_leaf_blocks_per_key format 9999990 heading 'LEAF|BLKS|/KEY'
col avg_data_blocks_per_key format 9999990 heading 'DATA|BLKS|/KEY'
rem
break on table_name
rem
select table_name, index_name,
decode( uniqueness, 'UNIQUE', 'U', null ) u,
blevel, leaf_blocks, distinct_keys,
avg_leaf_blocks_per_key, avg_data_blocks_per_key
from sys.dba_indexes
where table_owner like upper('&owner')
and table_name like upper('&table')
order by table_owner, table_name, index_name;

 Artículos relacionados

tablas externas en Oracle:consulte esta publicación para obtener información sobre el uso de las tablas externas en Oracle con un ejemplo, cómo crear una tabla externa, cómo usarla
Oracle Crear tabla:las tablas son la unidad básica de datos almacenamiento en una base de datos Oracle. Cubrimos cómo usar el comando de creación de tabla de Oracle para crear una tabla con una clave externa/clave primaria
Declaración de creación de espacio de tabla de Oracle:este artículo sobre cómo crear un espacio de tabla en Oracle, varias características asociadas con él y diferentes declaraciones de creación de espacio de tabla
Encuentre el estado de los índices y las columnas asignadas para una tabla
Índice virtual en Oracle:¿Qué es el índice virtual en Oracle? Usos, limitaciones, ventajas y cómo utilizar para comprobar el plan de explicación en la base de datos de Oracle, parámetro oculto _USE_NOSEGMENT_INDEXES
Factor de agrupación en clústeres del índice de Oracle:cómo se calcula el factor de agrupación en clústeres del índice de Oracle y cómo afecta al plan de explicación
Partición de Oracle Índice:comprensión del índice de partición de Oracle, ¿Qué son los índices globales no particionados?, ¿Qué son los índices locales con prefijo, el índice local sin prefijo

Cursos recomendados

Aquí está el buen curso de Udemy para Oracle SQL
Oracle-Sql-Step-by-step:este curso cubre sql básico, uniones, creación de tablas y modificación de su estructura, creación de vistas, unión, unión, todo y mucho más. . Un gran curso y un curso imprescindible para principiantes de SQL
El curso completo de certificación de Oracle SQL :Este es un buen curso para cualquier persona que quiera estar preparado para trabajar con habilidades de desarrollador de SQL. Un buen curso explicado
Oracle SQL Developer:fundamentos, consejos y trucos :muchos desarrolladores utilizan la herramienta de desarrollo Oracle Sql. Este curso nos brinda trucos y lecciones sobre cómo usarlo de manera efectiva y convertirnos en un desarrollador sql productivo
Oracle SQL Performance Tuning Masterclass 2020 :El ajuste del rendimiento es una de las habilidades críticas y más buscadas. Este es un buen curso para aprender sobre esto y comenzar a realizar ajustes de rendimiento de sql