La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Bases de Datos Índices.

Presentaciones similares


Presentación del tema: "Bases de Datos Índices."— Transcripción de la presentación:

1 Bases de Datos Índices

2 Table scan Un table scan es una búsqueda en donde se leen todas las filas de una tabla Una tabla que no tenga índices creados, solamente puede hacer búsquedas a través de un table scan

3 Indices Un índice es un objeto de base de datos que ayuda al servidor a encontrar un dato más rápidamente

4 Estructura de un Indice : Caso de Estudio
PAGE 1132 1421, 1 1129, 3 1409, 1 Bennet Chan Dull Edwards 1018, 5 PAGE 1007 Greane Hunter 1242, 4 1242, 1 1132 1133 1127 pg ptr row ptr PAGE 1305 Karsen 1876, 1 1311 key PAGE 1133 1421, 2 1409, 2 Green Greene PAGE 1127 1241, 4 Jenkins PAGE 1241 O’Leary Ringer White 10 11 12 13 PAGE 1242 Smith 14 15 16 17 PAGE 1421 18 19 20 PAGE 1409 21 22 23 (more pages) authors table (data pages) Index pages key PAGE 1001 Bennet Karsen Smith 1421, 1 1876, 1 1242, 1 1007 1305 1062 create index idx_authors_2 on authors(au_lname)

5 Crear y borrar índices Sintaxis simplificada para create : Ejemplo:
create [unique] [ clustered | nonclustered ] index index_name on table_name (column1 [, column2] ... ) Ejemplo: create clustered index idx_c_titles_1 on titles (title_id) Sintaxis Simplicada para drop : drop index table_name.index_name drop index titles.idx_c_titles_1

6 Atributos de los índices
Tres atributos describen cada índice El número de columnas sobre las cuales se declara el índice Una columna – índice no-compuesto Múltiples columnas - índice compuesto Si el índice acepta o no valores duplicados Se permiten valores duplicados - índice no-único No se permiten valores duplicados - índice único Si están o no ordenados los datos en la tabla por el concepto del índice cuando la tabla se crea Datos ordenados durante la creación - índice cluster Datos no ordenados durante la creación - índice no-cluster

7 Indice no-compuesto Un índice no-compuesto es un índice creado sobre una columna Ejemplo: create index idx_authors_2 on authors(state) Apropiado cuando las consultas se hacen frecuentemente sobre una sola columna select * from authors where state = "UT"

8 Indice compuesto Un índice compuesto es un índice creado sobre dos o más columnas Ejemplo: create index idx_authors_3 on authors(au_lname, au_fname) Apropiado cuando las consultas se hacen sobre múltiples columnas select * from authors where au_lname = "Ringer" and au_fname = "Anne"

9 Indice no-único Un Indice No-único es un índice que permite valores duplicados Ejemplo: create index idx_authors_2 on authors(state) Apropriado cuando las consultas se hacen sobre valores duplicados select * from authors where state = "UT"

10 Indice único Un índice único es un índice que no permite valores duplicados Ejemplo: create unique index idx_u_authors_1 on authors(au_id) Apropiado cuando cada valor en la columna indizada debe ser único select * from authors where au_id = " " Puede ser creado solamente sobre columnas que no tengan valores duplicados

11 Indice no-cluster Un índice no-cluster es un índice que utiliza un concepto de ordenamiento diferente a como se realizó el almacenamiento de la tabla Ejemplo: create nonclustered index idx_authors_4 on authors(state) Una tabla puede tener muchos índices no-cluster Apropiado para: Tablas que ya tienen un índice cluster

12 Estructura de un índice no-cluster
Index pages authors table (data pages) root level intermediate level leaf level PAGE 1241 O’Leary Ringer White Jenkins 10 11 12 13 PAGE 1242 Hunter Smith Greane 14 15 16 17 PAGE 1421 Bennet Green 18 19 20 PAGE 1409 Dull Greene 21 22 23 key row ptr row ptr pg ptr PAGE 1132 1421, 1 1129, 3 1409, 1 Bennet Chan Dull Edwards 1018, 5 key PAGE 1007 Bennet Greane Hunter 1421, 1 1242, 4 1242, 1 1132 1133 1127 row ptr pg ptr key PAGE 1001 Bennet Karsen Smith 1421, 1 1876, 1 1242, 1 1007 1305 1062 PAGE 1133 1242, 4 1421, 2 1409, 2 Greane Green Greene PAGE 1305 Karsen 1876, 1 1311 PAGE 1127 1242, 1 1241, 4 Hunter Jenkins (more pages) create index idx_authors_2 on authors(au_lname) (more pages) (more pages)

13 Indice cluster Un índice cluster es un índice que, cuando se crea, indica cómo están físicamente almacenados los datos en la tabla Ejemplo: create clustered index idx_c_authors_1 on authors(au_id) Una tabla sólo puede contener un índice cluster Típicamente mejora el rendimientos de las consultas que se hacen a una tabla Consultas con valor único (where state = ''CA'') Consultas por rango de valores (where price > $10.00) Puede dismuir el rendimiento en operaciones de modificación de los datos de una tabla Esta reducción se debe a que se deben almacenar físicamente los datos ordenados

14 Etructura de un índice cluster
Index pages authors table (leaf/data pages) root level intermediate level PAGE 1241 Bennet Chan Dull Edwards 10 11 12 13 PAGE 1242 Greane Green Greene 14 15 16 17 PAGE 1421 Hunter Jenkins 18 19 20 PAGE 1409 Karsen O'Leary Ringer 21 22 23 key pg ptr PAGE 1007 Bennet 1241 key pg ptr Greane 1242 PAGE 1001 Hunter 1421 Bennet 1007 Karsen 1305 Smith 1062 PAGE 1305 Karsen 1409 (more pages) create clustered index idx_authors_2 on authors(au_lname) (more pages)

15 Escritura de consultas que usen índices
Los índice se usan solamente cuando una consulta hace referencia a columna(s) indizada(s) en la cláusula where Si una tabla: Tiene dos columnas, y Cualquiera puede identificar una fila desada, y Una columna está indizada mientras la otra no, entonces Se debe utilizar la columna indizada en la cláusula where de la consulta

16 Ejemplo usando índices
crear una tabla: create table novels ( book_id int, title varchar(40), author varchar(40) ) Insertar tres filas: insert into novels values (1, "Congo", "M Crichton") values (2, "The Client", "J Grisham") values (3, "Jurassic Park", "M Crichton")

17 Ejecutar las sentencias
crear una tabla: create table novels ( book_id int, title varchar(40), author varchar(40) ) Insertar tres filas: insert into novels values (1, "Congo", "M Crichton") values (2, "The Client", "J Grisham") values (3, "Jurassic Park", "M Crichton") Ejecutar las sentencias create clustered index idx_c_novels_1 on novels(book_id) create unique index idx_u_novels_2 on novels(author) ¿Qué sentencia falla? ¿Por qué? ________________________________________ Borrar los objetos creados: drop index novels.idx_c_novels_1 drop table novels


Descargar ppt "Bases de Datos Índices."

Presentaciones similares


Anuncios Google