Está en la página 1de 4

Tarea 3 – Índices

1. Revisa y comenta brevemente sobre los


siguientes puntos:

a) Diferencia entre índices densos y dispersos.


Índices densos:
En este índice aparece un registro índice por cada valor
de la clave de búsqueda en el archivo. En un índice denso
agrupado el registro índice contiene el valor de la clave y
un puntero al primer registro con ese valor de la clave de
búsqueda. El resto de registros con el mismo valor de la
clave de búsqueda se almacenan consecutivamente
después del primer registro, dado que, ya que el índice es
con agrupación, los registros se ordenan sobre la misma
clave de búsqueda.
Índices dispersos:
Sólo se crea un registro índice para algunos de los valores.
Al igual que en los índices densos, cada registro índice
contiene un valor de la clave de búsqueda y un puntero al
primer registro con ese valor de la clave. Para localizar un
registro se busca la entrada del índice con el valor más
grande que sea menor o igual que el valor que se está
buscando. Se empieza por el registro apuntado por esa
entrada del índice y se continúa con los punteros del
archivo hasta encontrar el registro deseado.

b) Índices asociativos
Estos índices están basados en una distribución uniforme
de los valores a través de una serie de cajones (buckets).
c) Diferencia entre índices ordenados e
índices asociativos.
Índices ordenados:
En estos índices su contenido siempre va
estar ordenado.
Índices asociativos:
Su contenido está distribuido de forma
uniforme en cajones llamados “Buckets”, el
valor asignado a cada cajón está
determinado por una función llamada
“función de asociación”.

Puedes utilizar nuestro libro de referencia, a partir de la


página 284

2. Explica brevemente la diferencia entre buscar en


un índice Clustered y buscar en un índice Non-
Clustered.

Índice Clustered
En este tipo de índice, vamos a tener una entrada por
cada valor distinto, o mejor dicho entradas agrupadas.
Estos índices tienen la particularidad de que ordenan
la tabla en el mismo orden del índice y una tabla sólo
puede tener un solo índice de este tipo.

Non-Clustered
Es una estructura de datos que mejora la velocidad de
recuperación de datos de las tablas. A diferencia de un
índice agrupado (Clustered), un índice no agrupado
ordena y almacena datos por separado de las filas de
datos de la tabla. Es una copia de las columnas de
datos seleccionadas de una tabla con los enlaces a la
tabla asociada.
3. Tomando como base la tabla que se muestra más abajo,
Crea las sentencias SQL que muestren un ejemplo de cada
una de los tipos de búsquedas que se muestran más
abajo. Debes ir agregar e ir quitando objetos según sea
necesario, ej: ( agregar un PK, quitarlo, agregar un índice
de un tipo y quitarlo para poner otro de otro tipo, etc.)

Cliente(Id,Cedula,Nombre,Apellido)

a) Table Scan

b) Index Scan

c) Index Seek

d) Clustered Index Scan.

Desarrollo:
create database bd_index
go
use bd_index
go
create table Cliente(
Id int not null,
Cedula int not null,
Nombre varchar(50),
Apellido varchar(50),
CONSTRAINT PK_IdCliente PRIMARY KEY (Id)
)

--(Clustered index scan)


select * from Cliente

Insert into Cliente(Id,Cedula,Nombre,Apellido)


values(001,456789321,'Sebastian','Vargas')

Insert into Cliente(Id,Cedula,Nombre,Apellido)


values(002,456778422,'Leidy','Vargas')

Insert into Cliente(Id,Cedula,Nombre,Apellido)


values(003,556478912,'Ana','Abreu')

--Drop pk/Table Scan


ALTER TABLE Cliente
DROP CONSTRAINT PK_IdCliente
go
select * from Cliente where id=1

--Buscar el nombre de la PK/Drop table


SELECT name
FROM sys.key_constraints
WHERE type = 'PK' AND OBJECT_NAME(parent_object_id) = N'Cliente'
GO
Drop Table Cliente

--NONCLUSTERED INDEX/Index Scan


CREATE NONCLUSTERED INDEX C_Cedula
on Cliente (Cedula)

Select Cedula from Cliente


group by Cedula

---Clustered INDEX/Index Seek


Create Clustered index N_cliente on cliente(Nombre)

Select * from Cliente where Nombre='Sebastian'

También podría gustarte