Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los índices pueden ser creados usando una o más columnas, preparando la base de datos tanto
para búsquedas rápidas al azar como para ordenaciones eficientes de los registros.
Los índices son construidos sobre árboles B, B+, B* o sobre una mezcla de ellos, funciones de
cálculo u otros métodos.
El espacio en disco requerido para almacenar el índice es típicamente menor que el espacio de
almacenamiento de la tabla (puesto que los índices generalmente contienen solamente los
campos clave de acuerdo con los que la tabla será ordenada, y excluyen el resto de los detalles
de la tabla), lo que da la posibilidad de almacenar en memoria los índices de tablas que no
cabrían en ella. En una base de datos relacional un índice es una copia de parte de una tabla.
Crearemos una tabla para el ejemplo de creación de índices ejecutando la siguiente consulta
SQL:
PgSQL
CREATE TABLE facturacion (<br> codigo number(10) not null,<br> fecha date
default sysdate,<br> codigocliente number(10),<br> nombrecliente
1
varchar(100),<br> observacion varchar(2000),<br><strong> constraint
pk_facturacion_codigo primary key (codigo)</strong><br>) tablespace USERS
Como se puede observar en la consulta SQL anterior, al añadir la línea:
PgSQL
1 constraint pk_facturacion_codigo primary key (codigo)
Estamos indicando a Oracle que cree la tabla «facturacion», con el campo «codigo» y que éste
sea clave primaria, por lo que creará un índice automáticamente para este campo. Esta es una
forma de crear índices, en la creación de la tabla:
PgSQL
1 insert into facturacion
2 (codigo, codigocliente, nombrecliente)
3 values (1, 50, 'AjpdSoft')
Puesto que hemos indicado que la columna «codigo» sea clave primaria, Oracle no permitirá
valores duplicados para esta columna, esta comprobación la realizará basándose en el índice
creado. Si intentamos agregar un nuevo registro con con el valor de «codigo» a «1» (que ya
existe) nos mostrará este error:
PgSQL
1 select * from facturacion
Podremos ver los registros insertados en la tabla «facturacion»:
Para ver el índice creado se puede utilizar esta consulta.
Crear un índice en una tabla ya existente en Oracle
La creación de un índice en Oracle se realiza mediante el comando create index. Cuando se
define una clave primaria o una columna unívoca (UNIQUE) durante la creación de una tabla o
su mantenimiento, Oracle creará automáticamente un índice de tipo UNIQUE que gestione
dicha restricción, como hemos indicado anteriormente. La sintaxis completa de create index es
la siguiente:
create [bitmap | unique] index nombre_indice on
nombre_tabla (nombre_columna [, nombre_columna2] …) [reverse];
bitmap indica que se cree un índice de mapa de bits que permite crear índices en columnas con
muy pocos valores diferentes.
unique indica que el valor de la o las columnas indexadas debe ser único, no puede haber
duplicidades.
nombre_indice debe ser un nombre unívoco (no debe existir otro nombre de objeto en Oracle)
que siga los convenios de denominación de Oracle para nombrar columnas.
nombre_tabla será el nombre de la tabla donde se creará el índice.
nombre_columna (o columnas) será la columna de la tabla nombre_tabla en la que se creará el
índice. Se puede crear un índice para varias columnas.
reverse indica a Oracle que invierta los bytes del valor indexado, lo que puede mejorar la
distribución del procesamiento y de los datos cuando se insertan muchos valores de datos
secuenciales.
Para crear un índice en Oracle podemos utilizar SQL*Plus (herramienta de línea de comandos
incluida con Oracle), se puede utilizar Oracle Enterprise Manager (modo gráfico) o una
aplicación externa que permita acceso a Oracle, como por ejemplo:
PgSQL
create index IN_FACTURACION_NOMBRECLIENTE <br>on FACTURACION
1
(NOMBRECLIENTE)
Para ver el índice creado podemos ejecutar la siguiente consulta SQL (como indicamos aquí):
PgSQL
select index_name Nombre, index_type Tipo,<br>table_name Tabla, tablespace_name
1 Tablespace,<br>secondary Secundario<br>from all_indexes<br>where table_name =
'FACTURACION'
Para añadir un índice de tipo UNIQUE, obligando a que los valores del campo indexado sean
unívocos, no se puedan repetir en el campo de la tabla, ejecutaremos la siguiente sentencia
SQL:
PgSQL
create unique index IN_FACTURACION_COD_CODCLI_FE<br>on FACTURACION
1
(CODIGOCLIENTE, FECHA)
De esta forma Oracle no permitirá que haya dos registros en la tabla «facturacion» con el
mismo valor en los campos «codigocliente» y «fecha», es decir, sólo podrá añadirse una factura
por cliente y por día, un cliente no podrá tener dos facturas en un mismo día. Por ejemplo, si
insertamos este registro:
PgSQL
insert into facturacion<br>(codigo, codigocliente, fecha)<br>values (6900, 500,
1
to_date('31/12/2009', 'DD-MM-YYYY'))
Intentaremos insertar un segundo registro con el mismo valor en codigocliente y en fecha:
PgSQL
insert into facturacion<br>(codigo, codigocliente, fecha)<br>values (6910, 500,
1
to_date('31/12/2009', 'DD-MM-YYYY'))
Oracle detectará que se está intentando infringir una restricción única, por lo que mostrará el
siguiente mensaje de error y no dejará que se inserte el registro:
PgSQL
1 select *<br>from v$object_usage<br>where table_name = 'FACTURACION'
PgSQL
1 alter index nombre_indice nomonitoring usage;
En nuestro ejemplo:
PgSQL
1 alter index IN_FACTURACION_NOMBRECLIENTE nomonitoring usage
Ejecutando nuevamente la consulta:
PgSQL
1 select *<br>from v$object_usage<br>where table_name = 'FACTURACION'
Veremos que ha cambiado el valor de MONITORING a «NO» y ha añadido la fecha y hora a
END_MONITORING:
Mostrar información de los índices de una tabla en Oracle
Mostrar todas las restricciones de una tabla de Oracle
Para mostrar todas las restricciones de una tabla oracle (nombre de la restricción, nombre de la
tabla, columnas a las que afecta) ejecutaremos la siguiente consulta SQL:
PgSQL
select constraint_name Nombre, table_name Tabla,<br>substr(column_name, 1, 255)
1
Columnas<br>from all_cons_columns<br>where table_name = 'FACTURACION'
PgSQL
select segment_name, sum(bytes)/1024/1024 MB<br>from dba_extents<br>where
1
segment_name = 'PK_FACTURACION_CODIGO'<br>group by segment_name
Reconstrucción de índices ¿cuándo es necesaria? ¿cómo
hacerla?, parámetros de los índices en Oracle
Reconstruir índices en Oracle
Oracle proporciona la capacidad de realizar una reconstrucción rápida de índices, que permite
crear de nuevo un índice sin necesidad de eliminar el índice existente. El índice actualmente
disponible se usa como origen de datos para el índice nuevo, en lugar de utilizar la tabla como
origen de datos. Durante la reconstrucción del índice pueden cambiarse los parámetros de
almacenamiento (storage) y la asignación del espacio de tablas (tablespace).
PgSQL
1 ALTER INDEX PK_FACTURACION_CODIGO REBUILD;
Ejecutaremos esta consulta desde Oracle Enterprise Manager, accediendo a la opción «Hoja de
Trabajo de SQL», desmarcaremos la opción «Permitir Sólo Sentencias SELECT», en
«Comandos SQL» introduciremos:
PgSQL
1 ALTER INDEX PK_FACTURACION_CODIGO REBUILD;
Y pulsaremos en «Ejecutar». Si todo es correcto nos devolverá en «Resultados»: SQL se ha
ejecutado correctamente.
Cambiar los parámetros de configuración de un índice en Oracle
Si queremos cambiar algún parámetro de configuración de algún índice, como el
almacenamiento (storage) o incluso el espacio de tablas (tablespace) podremos ejecutar la
siguiente instrucción SQL:
PgSQL
alter index nombre_indice rebuild<br>storage (initial 8M next 4M)<br>tablespace
1
nombre_tablespace;
Con la instrucción anterior se reconstruirá el índice «nombre_indice» asignándole un tamaño
inicial de extensión de 8MB y un tamaño para las siguientes extensiones de 4MB. El índice
«nombre_indice» será creado en el tablespace «nombre_tablespace». Por lo que esta
instrucción SQL servirá para cambiar de tablespace un índice (si así lo deseamos).
Cambiar la ubicación de un índice a otro tablespace en Oracle
Oracle recomienda que los índices sean almacenados en un tablespace que apunte a una unidad
física diferente a la de los tablespaces de los datos. A continuación explicamos cómo cambiar la
ubicación (tablespace) de un índice ya creado.
En primer lugar necesitaremos disponer de un tablespace para los índices, crearemos uno
accediendo a Oracle Enterprise Manager, pulsando en «Servidor» y en la sección
«Almacenamiento» pulsando en «Tablespaces». Nos mostrará los tablespaces actuales,
pulsaremos «Crear»:
O bien ejecutando una consulta SQL como la siguiente:
PgSQL
CREATE SMALLFILE TABLESPACE "TB_INDICES" DATAFILE 'F:\Oracle\indices\
1 f_tbindices.dbf' SIZE 100M LOGGING EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO DEFAULT NOCOMPRESS
COMPARTIR:
CALIFICAR:
SOBRE EL AUTOR
alonsojpd
Presidente y fundador de Proyecto A y AjpdSoft
ENTRADAS RELACIONADAS
Comentar
Lo siento, debes estar conectado para publicar un comentario.
SESIÓN
Nombre de usuario:
Contraseña:
Recordar mi contraseña
Acceder
VIDEOTUTORIALES
Videotutorial | Reparar base de datos SQL Server corrupta que no arranca error 3456 Could not
redo log record
POST FOROS
Ejecutar consulta en WSL de WMI Powershell [RESUELTO] por Varios
Reiniciar apagar PC remoto en Windows por comando [RESUELTO] por Varios
Error 1792 al iniciar servicio w32time en Windows [RESUELTO] por Varios
Modificar DNS en Linux Ubuntu Server 20.0.4 [RESUELTO] por Varios
DESCARGAS
File Size6.50 KB
Downloads157
Descargar
Salida del comando pihole -up en Linux Debian y servidor DNS Pi-hole
File Size2.71 KB
Downloads37
Descargar
Archivo vsftpd.conf de configuración de vsftpd 3.0.3
File Size2.66 KB
Downloads97
Descargar
ProyectoA Validar Login WordPress Código Fuente en C#
File Size24.00 KB
Downloads60
Descargar
Fichero OVF original completo
File Size1.63 KB
Downloads81
Descargar
WIKI
Sasser.C
ETIQUETAS
OPEN
Artículos recientes
Liberar espacio en disco ocupado por System Volume Information
Eliminar partición de recuperación en Windows Server 2022 para extender partición principal
Solución error datastore inaccesible cuando se llena en SAN NetApp y VMware ESXi
Salir del modo arranque seguro Boot Manager
Error arranque equipo Windows Server 2022 tras actualizaciones pantalla EFI Boot Manager
Script batch para desinstalar software de forma automática y silenciosa
Instalar Apache Tomcat 9 en Linux Debian 11
Instalar firewall ufw en Linux Debian 11
Instalar Java JRE JDK en Linux Debian 11
Desplegar sistema de monitorización Pandora FMS en 5 minutos con Docker Compose en Linux Debian
Top descargas
ProyectoA Envío email TLS SSL v.1.6.8.69 con código fuente completo en Delphi 6
Indy Internet Direct 10.0.52 source code para instalar en Delphi desde 4 a 8 .Net XE RAD
Studio C++Builder
1 MB 672 descargas
Ejemplo contenido fichero my.ini de MySQL en instalación sobre Windows con AppServ en
unidad D
Driver/Controlador en formato ZIP con el XML y el VIB para VMware ESXi de NIC Realtek
RTL8168
Proyecto y aplicación web en Django de Python de sitio web completo para eliminar modificar
y crear contactos en BD MySQL MariaDB