You are on page 1of 28

Diseo de ndices

Adiel Omar FLORES RAMOS

Introduccin

Introduccin a los ndices


Arquitectura de los ndices
Cmo SQL Server recupera los datos almacenados
Cmo SQL Server mantiene las estructuras de los
ndices y los montones
Decisin de las columnas que se van a indizar

Msc. Adiel Omar FLORES RAMOS

Introduccin a los ndices


Cmo SQL Server almacena y tiene acceso a los datos
Ventajas e inconvenientes de crear ndices

Msc. Adiel Omar FLORES RAMOS

Cmo SQL Server almacena y tiene acceso a


los datos
Cmo se almacenan los datos
Las filas se almacenan en pginas de datos
Los montones son una coleccin de pginas de datos para
una tabla
Acceso a los datos
Recorre todas las pginas de datos en una tabla
Mediante un ndice que apunte a los datos de una pgina
Pginas de datos
Pgina 4
Con
Funk
White
...
...

Pgina 5
...
...
...
...
...

Rudd
White
Barr
...
...

Pgina 6
...
...
...
...
...

Akhtar
Funk
Smith
Martin
...

Pgina 8

Pgina 7
...
...
...
...
...

Smith
Ota
Jones
...
...

...
...
...
...
...

Martin
Phua
Jones
Smith
...

Msc. Adiel Omar FLORES RAMOS

Pgina 9
...
...
...
...
...

Ganio
Jones
Hall
...
...

...
...
...
...
...

Ventajas e inconvenientes de crear ndices


Razones para crear un ndice
Acelerar el acceso a datos
Fuerzan la unicidad de las filas

Razones para no crear un ndice


Consumen espacio en disco
Generan costos de procesamiento

Msc. Adiel Omar FLORES RAMOS

Arquitectura de los ndices

Arquitectura de ndices de SQL Server


Uso de montones
Uso de los ndices agrupados
Uso de los ndices no agrupados

Msc. Adiel Omar FLORES RAMOS

Uso de montones
SQL Server:
Utiliza las pginas de Mapa de asignacin de ndices
que:
Contienen informacin acerca del lugar donde estn
almacenadas las extensiones de un montn
Se utilizan para recorrer el montn y encontrar espacio
disponible para insertar nuevas filas
Conectan pginas de datos

Recupera espacio para las nuevas filas del montn


cuando se elimina una fila

Msc. Adiel Omar FLORES RAMOS

Uso de los ndices agrupados


Cada tabla slo puede tener un ndice agrupado
El orden fsico de las filas de la tabla y el orden de las
filas en el ndice son el mismo
La unicidad de los valores de clave se mantiene
explcitamente o implcitamente

Msc. Adiel Omar FLORES RAMOS

Uso de los ndices no agrupados


Los ndices no agrupados son los predeterminados de
SQL Server
Los ndices no agrupados existentes se vuelven a
generar automticamente
Se quita un ndice agrupado existente
Se crea un ndice agrupado
Se utiliza la opcin DROP_EXISTING para cambiar las
columnas que definen el ndice agrupado

Msc. Adiel Omar FLORES RAMOS

Cmo SQL Server recupera los datos


almacenados
Cmo SQL Server utiliza la tabla sysindexes
Bsqueda de filas sin ndices
Bsqueda de filas en un montn con un ndice no
agrupado
Bsqueda de filas en un ndice agrupado
Bsqueda de filas en un ndice agrupado con un ndice
no agrupado

Msc. Adiel Omar FLORES RAMOS

Cmo SQL Server utiliza la tabla sysindexes


Describe los ndices
Id. de ndice

Tipo de objeto

Montn

ndice agrupado

2 a 250

ndice no agrupado

255

text, ntext o image

Ubicacin de IAM, primero y raz de ndices


Nmero de pginas y filas
Distribucin de datos
Msc. Adiel Omar FLORES RAMOS

Bsqueda de filas sin ndices


sysindexes
id indid = 0
IAM

Extensin

127
128
129
130

Montn

Extensin 127
01
Con

01
Rudd
01
Akhtar
02
01
Funk
Smith

02
01
White
Con
02
01
Funk
Rudd
03
02
White
01
Ota
Akhtar

03
02
Barr
01
Funk
Smith
03
02
Smith
White
04
03
Durkin
02
Jones
Funk
......
04
03
...
02
White
Ota
03
Martin
05
Lang
03
...Barr
Smith
...............

...
03
Jones
...... ...Martin
...... ......
04

...

...... ...
......
......
...

Extensin 128
01
Dunn

01
Rudd
01
Akhtar
02
01
Randall
Smith

02
01
White
Con
02
01
Funk
Rudd
03
02
Ota
01
Ota
Akhtar

03
02
Barr
01
Funk
Smith
03
02
Smith
White
04
03
Slichter
02
Jones
Funk
......
04
03
...
02
White
Ota
03
Martin
05
LaBrie
03
...Barr
Smith
...............

...
03
Jones
...... ...Martin
...... ......
04

...

...... ...
......
......
...

Primera IAM

Mapa de bits

1
1
0
1

Extensin 129
01
Seattle

01
Rudd
01
Akhtar
02
01
Paris
Smith

02
01
White
Con
02
01
Funk
Rudd
03
02
Tokyo
01
Ota
Akhtar

03
02
Barr
01
Funk
Smith
03
02
Smith
White
04
03
Atlanta
02
Jones
Funk
......
04
03
...
02
White
Ota
03
Martin

...
03
...Barr
Smith
...............
...
03
Jones
04
...... ...Martin
... ...

...... ...............
......
......

Msc. Adiel Omar FLORES RAMOS

Extensin 130
01
Graff

01
Rudd
01
Akhtar
02
01
Bacon
Smith

02
01
White
Con
02
01
Funk
Rudd
03
02
Koch
01
Ota
Akhtar

03
02
Barr
01
Funk
Smith
02
Smith
White
03
03
...
02
Jones
Funk
......
03
...
02
White
Ota
03
Martin
04

...
03
...Barr
Smith
...............
...
03
Jones
04
...... ...Martin
... ...

...... ...............
......
......

Bsqueda de filas en un montn con un ndice no


agrupado
id
indid = 2
raz
sysindexes

Akhtar
No situadas
...
en el nivel
Martin
firstname
Pg. 37SELECT lastname,Pg.
28
de hoja
Pg. 12 - Raz
AkhtarFROM member
Martin
Ganio
Smith
WHERE
lastname
...
...

Pg. 41
Akhtar 4:706:01
Barr 4:705:03
Con 4:704:01
Funk 4:706:02
Funk 4:704:02

ndice
ndice
no
agrupado
no
agrupado

BETWEEN 'Masters' AND 'Rudd'

Pg. 51
Ganio 4:709:01
Hall 4:709:04
Jones 4:709:02
Jones 4:708:03
Jones 4:707:03

Pg. 61
Martin 4:708:01
Matey 4:706:04
Matey
Ota 4:707:02
Ota
Phua 4:708:02
Rudd 4:705:01

Pg. 71
Nivel de hoja
(Valor de
Smith 4:706:03
Smith 4:708:04
clave)
Smith 4:707:01
White 4:704:03
White 4:705:02

Montn
Pg. 704
01 ... Conn
02 ... Funk
03 ... White
... ... ...
... ... ...
File ID #4

Pg. 705
01 ... Rudd
02 ... White
03 ... Barr
... ... ...
... ... ...

Pg. 706
01 ... Akhtar
02 ... Funk
03 ... Smith
04 ... Matey
... ... ...

Pg. 707
01 ... Smith
02 ... Ota
02
03 ... Jones
... ... ...
... ... ...

Pg. 808
01 ... Martin
02
02 ... Phua
03 ... Jones
04 ... Smith
... ... ...

Msc. Adiel Omar FLORES RAMOS

P 709709
Pg.
01 ... Ganio
02 ... Jones
03 ... Hall
... ... ...
... ... ...

Bsqueda de filas en un ndice agrupado


sysindexes

id

indid = 1

raz

ndice agrupado
Akhtar

Martin
Pg. 140 - Raz

Akhtar
SELECT
lastname, firstname Martin
Ganio
Smith
FROM
member

WHERE
lastname
=
'Ota'
Pg. 141
Pg. 145
Akhtar 2334
Barr
5678
Con
2534
Funk 1334
Funk 1534
...
...
Pg. 100

...
...
...
...
...
...

Ganio 7678
Hall
8078
Jones 2434
Jones 5978
Jones 2634
...
...
Pg. 110

...
...
...
...
...
...

Martin 1234
Martin 7778
Ota
5878
Phua 7878
Rudd 6078
...
...
Pg. 120

...
...
...
...
...
...

Msc. Adiel Omar FLORES RAMOS

Smith 1434
Smith 5778
Smith 7978
White 2234
White 1634
...
...
Pg. 130

...
...
...
...
...
...

Bsqueda de filas en un ndice agrupado con un


ndice no agrupado
sysindexes
ndice no
agrupado
para
First Name

id

indid = 2

raz

No situadas
en el nivel
de hoja

Aaron
...
Jose
Aaron

Jose

SELECT
lastname, firstname,
phone
Deanna
Nina
FROM
member

WHERE firstname = 'Mike'

Aaron
Adam
Amie

Con
Barr
Baldwin

Daum
Hall
Hampton

Jose
Judy
Mike

Lugo
Kaethler
Nash

Nivel
de hoja
(Valor de clave
agrupado)

Barr
Kim
Nagata
OMelia

ndice agrupado
para Last Name
Barr
Cox
Daum

Deanna
Don
Doug

Adam
Arlette
Deanna

Kim
Kobara
LaBrie

Shane
Linda
Ryan

Nagata
Nash
Nixon

Msc. Adiel Omar FLORES RAMOS

Susanne
Mike
Toby

Cmo SQL Server mantiene las estructuras de los


ndices y los montones
Divisiones de pginas en un ndice
Puntero de reenvo en un montn
Cmo SQL Server actualiza filas
Cmo SQL Server elimina filas

Msc. Adiel Omar FLORES RAMOS

Divisiones de pginas en un ndice


INSERT member (last name)
VALUES lastname = Jackson'
Pginas de ndice
No situadas
en el nivel
de hoja

Akhtar

Martin
Akhtar
Ganio
Jackson

Lang
Smith

Nivel
Nivel de
de hoja
hoja

Akhtar
Barr
Barr
Borm
Buhl

Ganio
Akhtar
Hall
Barr
Hart
Barr
Borm
Buhl

Jackson
Ganio
Jones
Hall
Jones
Hart
Jones
Jones

Lang
Martin
Martin
Martin
Moris

Msc. Adiel Omar FLORES RAMOS

Smith
Smith
Smith
Smith
Smith

(Valor de clave)

Puntero de reenvo en un montn


sysindexes

Pg. 37
Akhtar
Ganio
UPDATE
...

id

indid = 2
Akhtar
...
Martin
Pg. 12 - Raz

raz
No situadas
en el nivel
de hoja

Pg. 28
Martin
Smith
...

ndice no
agrupado

member
SET Pg.
Address
=Pg.
<something
long>
Pg. 41
51
61
Pg. 71
Nivel de hoja
WHERE
lastname
=
'Ota'
(Valor
de
Akhtar 4:706:01 Ganio 4:709:01 Martin 4:708:01 Smith 4:706:03
(Valor de
clave)
Barr
Con
Funk
Funk

4:705:03
4:704:01
4:706:02
4:704:02

Hall
Jones
Jones
Jones

4:709:04
4:709:02
4:708:03
4:707:03

Martin
Ota
Ota
Phua
Rudd

4:706:04
4:707:02
4:708:02
4:705:01

Smith
Smith
White
White

4:708:04
4:707:01
4:704:03
4:705:02

clave)

Montn
Pg. 704
01 ... Conn
02 ... Funk
03 ... White
... ... ...
... ... ...
File ID #4

Pg. 705
01 ... Rudd
02 ... White
03 ... Barr
... ... ...
... ... ...

Pg. 706
01 ... Akhtar
02 ... Funk
03 ... Smith
04 ... Martin
... ... ...

Pg. 707
01 ... Smith
02
02 ... Ota
03 ... Jones
04 ... Corets
05 ... Nash

Pg. 808
01 ... Martin
02 ... Phua
03 ... Jones
04 ... Smith
... ... ...

Msc. Adiel Omar FLORES RAMOS

Pg. 709
01 ... Ganio
02 ... Jones
03 ... Hall
...
04 ... ...Ota
... ... ...

Cmo SQL Server actualiza filas


Una actualizacin no suele hacer que una fila se mueva
Una actualizacin puede ser una eliminacin seguida de
una insercin
Las actualizaciones por lotes tocan cada ndice una sola
vez

Msc. Adiel Omar FLORES RAMOS

Cmo SQL Server elimina filas

Cmo las eliminaciones producen registros fantasma

Cmo SQL Server reclama espacio

Cmo se pueden reducir los archivos

Las pginas de ndice agrupadas se desplazan como una unidad

Los registros del montn se desplazan de forma individual

Msc. Adiel Omar FLORES RAMOS

Decisin de las columnas que se van a indizar

Comprensin de los datos


Directrices de indizacin
Eleccin del ndice agrupado adecuado
Creacin de ndices que admiten consultas
Determinacin de la selectividad
Determinacin de la densidad
Determinacin de la distribucin de datos

Msc. Adiel Omar FLORES RAMOS

Comprensin de los datos


El diseo lgico y fsico
Las caractersticas de los datos
Cmo se utilizan los datos
Los tipos de consultas realizadas
La frecuencia de las consultas ms tpicas

Msc. Adiel Omar FLORES RAMOS

Directrices de indizacin
Columnas adecuadas para indizar

Claves principal y externa


En las que se buscan frecuentemente intervalos
A las que se tiene acceso de forma ordenada
Agrupadas juntas durante la agregacin

Columnas no adecuadas para indizar


Se incluyen con poca frecuencia en consultas
Contienen pocos valores nicos
Se definen con los tipos de datos text, ntext o image

Msc. Adiel Omar FLORES RAMOS

Eleccin del ndice agrupado adecuado


Tablas continuamente actualizadas
Un ndice agrupado con una columna de identidad
mantiene las pginas actualizadas en memoria

Ordenacin
Un ndice agrupado mantiene los datos preordenados

Longitud de columna y tipo de datos


Limita el nmero de columnas
Reduce el nmero de caracteres
Utiliza los tipos de datos ms pequeos posibles

Msc. Adiel Omar FLORES RAMOS

Creacin de ndices que admiten consultas


Uso de argumentos de bsqueda
Escritura de buenos argumentos de bsqueda
Especificar una clusula WHERE en la consulta
Comprobar que la clusula WHERE limita el nmero
de filas
Comprobar que existe una expresin para cada tabla a la
que se hace referencia en la consulta
Evitar el uso de caracteres comodines iniciales

Msc. Adiel Omar FLORES RAMOS

Determinacin de la selectividad
Alta selectividad

member_no last_name first_name


1

Randall

Joshua

Flood

Kathie

SELECT *
FROM member
WHERE member_no > 8999

.
.
.
10000

Nmero de filas que cumplen el criterio


1000
=
Nmero total de filas en la tabla
10000 = 10%

Anderson

Bill

Baja selectividad

member_no last_name first_name


1

Randall

Joshua

Flood

Kathie

SELECT *
FROM member
WHERE member_no < 9001

.
.

.
10000

Nmero de filas que cumplen el criterio 9000


= 10000 = 90%
Nmero total de filas en la tabla

Anderson

Bill
Msc. Adiel Omar FLORES RAMOS

Determinacin de la densidad
last_name

first_name

Randall

Joshua

.
.
.
Randall
Randall

Cynthia
Tristan

Alta densidad
SELECT *
FROM member
WHERE last_name =
Randall

Baja densidad

.
.
Ota
.

Lani

SELECT *
FROM member
WHERE last_name = Ota

.
.

Msc. Adiel Omar FLORES RAMOS

Determinacin de la distribucin de datos


Distribucin estndar de valores

Nmero
de
Last Names
A- E

F-J

K-O
P-U
Last Name

V-Z

Distribucin uniforme de valores

Nmero
de
Last Names
A- B

C-F

G-K
L-N
Last Name

Msc. Adiel Omar FLORES RAMOS

O-Z

You might also like