Sunteți pe pagina 1din 37

Creacin de ndices

y diagramas de
bases de datos.
ALUMNOS:
ESTRADA JESS VALDEMAR
FERNNDEZ ROBLES LORENA
Introduccin
En este captulo, aprender los conceptos bsicos de la indexacin
y la forma en que no puedes empezar a aplicar una indexacin.
Este captulo cubre los siguientes temas:
Lo que es un ndice.
Diferentes tipos de ndices.
Las restricciones de tamao de los ndices.
Cualidades de un buen ndice y un mal ndice.
Cmo construir un ndice en el cdigo, as como de forma grfica.
Cmo modificar un ndice.

QUE ES UN INDEX.
Se define un ndice en SQL Server para que pueda localizar las filas
que requieres para satisfacer base de datos de consulta rpida.
Si no existe un ndice de ventanas para ayudar a encontrar las filas
necesarias, SQL Sirve no tiene otra opcin que buscar en cada fila
de una tabla para ver si contiene la informacin requerida por la
consulta.
NOTA: habr momentos en que una exploracin de tabla es la opcin
preferida por encima de un ndice. Por ejemplo, si SQL Server necesita
para procesar una proporcin razonable de filas dentro de una tabla,
que se estima a veces a ser alrededor del 10 por ciento o ms de los
datos, a continuacin, puede encontrar que el uso de una
exploracin de tabla es mejor que usar un ndice.

Tipos de ndices.

SQL Server tiene tres tipos de ndices-
ndices-nos XML clster, no agrupados, y de primaria
y secundaria se concentran slo en agrupado y no
agrupado en este libro, como los ndices XML y XML
son tema requieren y avanzado.
Tipo de ndice se refiere a la forma en que el ndice y
las filas fsicos de los datos se almacenan
internamente por SQL Server. Las diferencias entre los
tipos de ndices son importantes para entender, por
lo que vamos a profundizar en ellas en los apartados
siguientes.

CLUSTERED (AGRUPAR).
Un ndice agrupado define el orden fsico de los
datos de la tabla. Si usted tiene ms de una
columna definida en un ndice agrupado, los
datos sern almacenados en orden secuencial
de acuerdo a la columna: la primera columna.
a continuacin, la siguiente columna, y as
sucesivamente.
Slo un ndice agrupado puede definirse por
tabla. Sera imposible para almacenar los datos
en dos rdenes fsicos diferentes.

No coloque un ndice agrupado en la columna que
tendr un montn de cambios realizados en ellos,
ya que esto significa que SQL Server tendr que
cambiar constantemente el orden fsico de los
datos y as utilizar una gran cantidad de potencia
de procesamiento y programacin.

Como ndice agrupado contiene los propios datos
de la tabla, SQL Server podra realizar menos
operaciones de E / S para recuperar los datos
utilizando el ndice agrupado que sera el uso de un
ndice no agrupado. Por lo tanto, si usted slo tiene
un ndice en una tabla, trate de asegurarse de que
es un ndice agrupado.

NONCLUSTERED (NO AGRUPADOS).

A diferencia de un ndice agrupado, un ndice no
agrupado no almacena los propios datos de la tabla,
lugar, pueden existir unos ndices de no agrupados en una
nica tabla a la vez.
Cuando va a recuperar informacin de una tabla que
tiene un ndice no agrupado, SQL Server busca la fila
correspondiente en el ndice.
Cuando se crea un ndice no agrupado, la informacin
utilizada para construir el ndice se coloca en un lugar
separado de la mesa y, por tanto, se puede almacenar en
ser almacenado en un disco fsico diferente si es necesario.

Unicidad
Un ndice se puede definir como ya sea nica o no nico.
Un ndice nico garantiza que los valores contenidos en
las columnas de ndice nico slo aparecern una vez en
la mesa, incluyendo un valor de NULL.
SQL Server aplica automticamente la singularidad de las
columnas contenidas dentro de un ndice nico. Si se
intenta insertar un valor que est ya presente existen en la
tabla, se generar un error y el intento de insertar o
modificar los datos fallar.

Determinacin de lo que hace un mal ndice .
Ahora que usted sabe lo que hace un buen ndice,
vamos a investigar lo que hace que un mal ndice.
hay varias "trampas" a tener en cuenta:
El uso de columnas inadecuados
La eleccin de los datos inadecuados
Incluyendo demasiadas columnas
Incluyendo muy pocos registros en la tabla


Crear un ndice

Ahora que usted sabe lo que es un ndice y usted tiene
una comprensin de los diversos tipos de ndices,
vamos a proceder a crear un poco de SQL Server. Hay
muchas maneras diferentes de crear ndices en
SQL Server, como se podra esperar. Esos diversos
mtodos son el foco de esta seccin del captulo, a
partir de cmo utilizar el diseador de tablas en SQL
Server Management Studio.
El primer ndice que colocaremos en la base de datos
estar en el campo IdCliente en el Mesa
CustomerDetails.Customers.

Crear un ndice con el Diseador de
tablas
Cuando la columna de CustomerId est
configurado, SQL Server generar
automticamente los datos dentro de este
campo cada vez que se inserta un nuevo
registro en esta tabla. Estos datos no alterarn,
ya que utiliza la funcin IDENTITY para la
columna. Por lo tanto, la CustomerId la columna
se actualizar automticamente cada vez que
se agrega un cliente.
ndices y Estadsticas
Al recuperar datos, SQL Server, obviamente, tiene que tomar algunas
decisiones sobre la mejor manera de llegar a que los datos y volver a la
consulta que lo soliciten. Incluso si un ndice se ha creado en un
conjunto de columnas,
SQL Server puede determinar que es mejor y ms rpido que usar otro
mtodo para recuperar los datos a travs de una mesa de exploracin,
tal vez. O tal vez hay un par de ndices que podran ser elegidos para
recuperar los mismos datos. No importa cul sea el escenario, SQL Server
tiene que tener una base de informacin sobre para tomar decisiones
sensatas y precisos.
SQL Server mantiene estadsticas sobre cada columna incluida en un
ndice. Estas estadsticas son actualizadas durante un perodo de tiempo
y en un nmero de inserciones o modificaciones. Los detalles de cmo
todo sto funciona en segundo plano, y cmo SQL Server mantiene las
estadsticas hasta la fecha, es un avanzado tema.

Dicho esto, no siempre es prudente dejar que las
estadsticas Recalcular SQL Server
automticamente. SQL Server har las
actualizaciones cuando se siente que se necesiten.
Esto puede suceder en un tiempo muy ocupado del
procesamiento, que no tienen control sobre cundo
va a suceder . Sin embargo, si SQL Server no
actualizar las estadsticas , la consulta que caus la
actualizacin para empezar no se ver afectada ,
ya que las estadsticas se actualizarn de forma
asncrona
Si la opcin AUTO_UPDATE_STATISTICS_ASYNC est
encendido.

La sintaxis de CREATE INDEX

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ]
INDEX
EN tabla (columna [ ASC | DESC ] [, ... n])
[ CON { IGNORE_DUP_KEY | DROP_EXISTING | SORT_IN_TEMPDB } ]
[ON grupo de archivos ]

Vamos a pasar por cada punto uno por uno a fin de que las opciones
de esta versin reducida son claras:
CREAR: Necesario. Esta palabra clave informa SQL Server que ser la
construccin de un nuevo objeto.
NICO: Opcional. Si se utiliza, esta opcin le informar SQL Server que
las columnas aparecen en el
ndice traer de vuelta una sola fila nica. Esto es reforzado por SQL
Server al intentar insertar una fila duplicada, como se devolver un
mensaje de error.
agrupado o no agrupado: Opcional. Si ninguno CLUSTERED ni
NONCLUSTERED aparece de forma explcita, el ndice se crear como
NONCLUSTERED.
NDICE: Necesario. Esto informa a SQL Server que el nuevo objeto ser
un ndice.

Crear un ndice en el Editor de consultas:
Plantilla

La sintaxis SQL para la creacin del ndice.
Prubelo: El uso de una plantilla de Editor de
consultas para construir un ndice
1. Asegrese de que el Explorador de
plantillas est abierta (prensa + T + Alt Ctrl o
seleccione Ver Explorador de plantillas ).
Vaya a la
Nodo de ndice y expandirla. Seleccione la
opcin Crear nodo ndice Bsico y haga
doble clic.
2. Un nuevo editor se abrir con el siguiente cdigo en l. La plantilla
que se instala se basa en los AdventureWorks ejemplo. Como se vio en
el captulo anterior, puede crear nuevas plantillas o modificar ste.
- =============================================
- Crear un ndice plantilla bsica
- =============================================
USO <database_name, sysname, AdventureWorks>
GO
CREATE INDEX <index_name, sysname, ind_test>
EN <schema_name, sysname, Person> . <table_name, Sysname, IP>
(
<column_name1, sysname, PostalCode>
)
GO

3. Modificar la plantilla ya sea cambiando el
cdigo o utilizando los valores especifican para
la opcin de parmetros de plantilla, quehar
que el ndice de creacin de ms fcil. El botn
debe estar en la barra de herramientas del
Editor SQL
4. Cambiar la base de datos a la base de datos
de ejemplo, el nombre del ndice (en este caso,
ha sido nombrado despus de la tabla ),
establecer schema_name para CustomerDetails
, nombre_tabla para CustomerProducts y
column_name1 a CustomerId.


5. Ahora, el cdigo es el siguiente:

USO ApressFinancial
GO
CREATE INDEX IX_CustomerProducts
EN CustomerDetails.CustomerProducts
(
CustomerId
)
GO


6. Ejecute el cdigo presionando F5 o Ctrl + E, o haciendo
clic en el botn Ejecutar barra de herramientas. A
continuacin, debera ver el siguiente mensaje de xito:
Comando ( s ) complet con xito.
7. Ahora que ha terminado el proceso, tendr que
comprobar que el ndice en realidad ha sido creado como
se esperaba.
Desde el Explorador de objetos, haga clic en el botn
Actualizar en la barra de herramientas del Explorador de
objetos o seleccione la opcin Actualizar en el men
contextual del botn derecho. Vaya a la mesa
CustomerDetails. CustomerProducts y ampliar el nodo
ndices. Esto le proporciona la informacin inmediata, pero
limitado, de este ndice. Usted puede ver su nombre y que
no es nico ni en clster.
ndice de CustomerProducts
8. Usted puede ver una perspectiva diferente del ndice si resalta el ndice,
haga clic en y seleccione Propiedades.


9. La ficha ms interesante para ver una vez que
tenga los datos dentro de la tabla o una vez que
ests en la produccin es la fragmentacin tab. A
medida que se modifican los datos, los ndices
tambin se modifican. Al igual que un disco duro, un
ndice tambin sufrir de la fragmentacin de los
datos dentro del ndice. Esto ralentizar su ndice, y,
como se mencion anteriormente.
La ltima forma de crear un ndice es mediante la
codificacin de todo el ndice de la mano en una
ventana del Editor de consultas , lo que vamos a ver
en la seccin siguiente.


Creando un ndice en un editor:
Cdigo SQL

Las transacciones y las transacciones de detalle, tipos de transacciones. El cdigo nos muestra
como construir T-SQL define opciones por el ndice presentado durante la creacin de la sintaxis del
cdigo.
1.-Escriba el siguiente cdigo en un panel vaco del Editor de consultas. El primer ndice que ser la
creacin de esta seccin es un ndice agrupado de forma nica en la tabla. TransactionDetails.
TransactionTypes.
USE ApressFinancial
GO
CREATE UNIQUE CLUSTERED INDEX IX_TransactionTypes
ON TransactionDetails.TransactionTypes
(
TransactionTypeId ASC )
WITH (STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = OFF)
ON [PRIMARY]
GO
2.- Un ndice no agrupado en la tabla TransactionDetails. Transactions
sobre la base de la columna de la transactionType. Usted no va a hacer este
ndice agrupado, ya que sera mejor considerar ya sea CustomerId o
DateEntered como:
CREATE NONCLUSTERED INDEX IX_Transactions_TType
ON TransactionDetails.Transactions
(
TransactionType ASC)
WITH (STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = OFF)
ON [PRIMARY]
GO columnas agrupadas.
Msj 1913, nivel 16, estado 1, lnea 1
Error en la operacin debido a un ndice o estadsticas con nombre
'IX_TransactionTypes'
que ya existe en la tabla 'TransactionDetails.TransactionTypes'.
Msj 1913, nivel 16, estado 1, lnea 1
Error en la operacin debido a un ndice o estadsticas con nombre
'IX_Transactions_TType' ya existe en la tabla
'TransactionDetails.Transactions'.
Msj 1779, nivel 16, estado 0, lnea 1
Table 'TransactionDetails.TransactionTypes' ya tiene una clave principal
definido en l.
Msj 1750, nivel 16, estado 0, lnea 1
No se pudo crear la restriccin. Consulte los errores anteriores
Borrar un ndice
Los tiempos cuando son redundantes y pueden ser
removidos de una tabla.
Eliminado un ndice ejecutando un simple caso de
eliminacin de una instruccin, encontrndola por el
nombre de la tabla y el nombre del ndice. Por los
ndices que existen, procesando el tiempo requerido,
saliendo los datos por la fecha de modificacin.
Cuando un ndice tiene que usar la creacin de
columnas, o cuando un ndice no es pequeo los
accesos de datos y comienza a ignorar los datos, por
SQL server.
USE ApressFinancial
GO
DROP INDEX IX_TransactionTypes ON
TransactionDetails.TransactionTypes
Alterando un editor
A diferencia con una tabla, no es posible utilizar un comando ALTER para cambiar las columnas
contenidas en un ndice. Para ello, primero hay que quitar el ndice y volver a crearlo. El
comando DROP quitar fsicamente el ndice de la tabla, por lo tanto, usted debe asegurarse de
que sabe lo que el contenido del ndice son antes de descartar el ndice, si desea volver a crear
un ndice similar.
USE ApressFinancial
GO
CREATE UNIQUE CLUSTERED INDEX IX_SharePrices
ON ShareDetails.SharePrices
(
ShareId ASC,
PriceDate ASC
) WITH (STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = OFF)
ON [PRIMARY]
GO
Cuando no existe un ndice
La aplicacin original trabaja con su base de datos tiene
extensiones, por lo que su base de datos original las decisiones de
diseo y de ndice no pueden seguir siendo 100% correcto. El
problema subyacente es que las consultas son sucediendo dentro
de su base de datos con los datos para los que no existe un ndice
adecuado.
Cuando SQL Server tiene acceso a los datos, utiliza su optimizador
de consultas para generar lo que se denomina una consulta plan.
Un plan de consulta es un plan de acciones que SQL Server utiliza
para realizar la consulta que usted ha construido contra los datos.
El plan de consultas podra constar de varios pasos que SQL Server
realiza para ejecutar su consultar y producir los resultados que
usted requiere.
Creacion de un diagrama de base
de datos
1.- Asegrese de que SQL Server Management Studio se est
ejecutando y que la base de datos ApressFinancial se expande para
que pueda ver los diagramas de bases de datos y nodos Tablas.
Seleccione el nodo Diagramas de base de datos y luego click
derecho.
Elegir instalar diagrama apoyo

2.- Si este es el primer diagrama que ha
creado para la base de datos, tendr que
instalar los objetos de soporte. Sin ellos, no
se puede crear el diagrama, as que haga
clic en S en el siguiente indicador de
dilogo
3.- La primera pantalla que ver al crear el diagrama es el
cuadro de dilogo Agregar tabla (vea la Figura 6-12).
Seleccione todas las tablas que figuran, como usted quiere
utilizar todas las tablas del diagrama, y luego haga clic en
Agregar. Esto "vaciar" la pantalla.
Haga clic en Cerrar.
4.-Despus de unos momentos, se le volver a Management Studio,
pero con el esquema de base de datos ahora construido. El
diagrama no se muestran todas las tablas en este momento y va a
ser muy grande. Usted puede reducir el tamao a travs del Tamao
cuadro combinado en la barra de herramientas de diagramacin.
5.- Muestra del diagrama

Diagrama con la barra de
herramientas

S-ar putea să vă placă și