Está en la página 1de 15

Recuperacin de datos

Declaracin General de SELECT


El SELECT ms bsico que puede construirse devolver una constante.
Por ejemplo, las consultas siguientes devuelven uno o ms constantes
como conjunto de resultados.
FROM se utiliza para especificar el origen de la tabla desde la que desea
recuperar los datos.

T-SQL proporciona la capacidad para cambiar el nombre de columnas y


tablas, denominada alias. Los alias pueden ser de tres diferentes
formas:
<alias> = <column>
<column/table> AS <alias>
<column/table> <alias>

Usted puede utilizar las funciones CAST y CONVERT para cambiar el tipo
de datos.
Cuando el nmero de caracteres no est especificado para CAST/
CONVERT el valor por defecto es 30.
CAST o CONVERT slo deben utilizarse cuando SQL Server no puede
convertir implcitamente los tipos de datos CONVERT tiene una
capacidad de formato adicional para los datos de fecha y hora. CONVERT
acepta un tercer parmetro para los tipos de datos date y time, que le
permite especificar un formato de cadena.
T-SQL le permite concatenar dos valores utilizando el signo ms +,
Si desea devolver el nmero de filas de una tabla, puede utilizar la
funcin COUNT,
Si usted necesita devolver condicionalmente un valor en un conjunto de
resultados, puede utilizar la funcin CASE.
El reordenamiento de la expresin CASE, para mover el condicional para
A.Datum al inicio de la funcin CASE, causar que Mensajero
Contoso y Consolidado no aparezca en los resultados.
Cuando hay superposicin de los condicionales en una funcin CASE, lo
nico que tendra que hacer es cambiar el orden dentro de la
declaracin CASE y con ello podra romper una aplicacin.

Ordenando Resultados
Cuando usted necesita ordenar los resultados devueltos, utilice la
clusula ORDER BY. ORDER BY no permite
columnas que sean de los tipos de datos TEXT, NTEXT, IMAGE, o XML.
Las columnas de la clusula ORDER BY no tienen por qu incluirse en la
lista SELECT

Filtrado de datos
La clusula WHERE se utiliza para limitar los resultados devueltos. Los criterios
de filtrado aplicados a una consulta se conocen como un argumento de
bsqueda (Search-Argument SARG).
T-SQL proporciona una alternativa a >= y <=, esta es BETWEEN, que
har sus consultas ms legibles.
T-SQL no reconoce o permite el uso de una matriz, pero se puede
especificar una lista de valores utilizando la palabra clave IN.
Con frecuencia las aplicaciones buscarn datos de carcter basados en
un fragmento de una cadena. Los
Operadores de desigualdad no proporcionan el tipo de funcin de
bsqueda para manejar fragmentos de cadena. El operador LIKE en
conjunto con los caracteres comodn, permite buscar filas basndose en
un fragmento de cadena. T-SQL tiene dos caracteres comodines
Percent (%)Usado para especificar cualquier cantidad de caracteres
Underscore (_)Usado para especificar un nico carcter
Los comodines se pueden utilizar en cualquier lugar dentro de la cadena
de bsqueda
La primera tarea al escribir cualquier aplicacin es producir cdigo que
cumpla con los requerimientos del negocio (es decir, que produzca los
resultados deseados). La segunda tarea es hacer que el cdigo se
ejecute lo ms rpido que sea posible.
Los ndices slo pueden utilizarse para buscar, cuando SQL Server
puede coincidir un valor especfico contra una clave de ndice.
Los ndices slo se pueden utilizar si el SARG comienza con un valor
discreto. Las tres primeras consultas en el ejemplo anterior pueden
utilizar un ndice en la columna Nombre, porque el SARG comienza con
un valor discreto. La cuarta consulta es muy ineficiente y muy
desalentadora, ya que requiere de SQL Server para escanear todas las
filas de una tabla.
Un valor NULL no es igual a otro NULL y un valor NULL no es igual a un
valor. Por lo tanto, cuando se crea una consulta con "= NULL," usted est
pidindole a SQL Server que encuentre las filas que son equivalentes a
un NULL. Dado que es imposible que algo sea equivalente a la
inexistencia de un valor, la consulta no devuelve ninguna fila.
Tambin puede utilizar la palabra clave NOT para obtener la
comparacin negativa. Si slo quera regresar las primeras filas
en un conjunto de resultados, puede utilizar el operador TOP.

Recuperacin de ms de una tabla


Hay Cinco operadores vlidos de combinacin: INNER JOIN, LEFT
OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN y CROSS JOIN.
Un INNER JOIN combina dos tablas en funcin de los criterios
establecidos en la clusula ON, al mismo tiempo que elimina las filas de
ambas tablas que no cumplen con los criterios.
T-SQL le permite poner SARGs en la clusula join. Sin embargo, se
recomienda dejar todas las SARGs en la clusula WHERE.
Los OUTER JOIN son usados para combinar dos tablas juntas,
preservando todas las filas de un lado de la unin.
Un LEFT OUTER JOIN preservar todas las filas de la tabla de la
izquierda y slo aadir valores que existen en la tabla de la derecha.
Un RIGHT OUTER JOIN conserva todas las filas de la tabla de la
derecha y anexa los valores nicos que existen en la tabla de la
izquierda
Aunque es una sintaxis vlida incluir una instruccin SELECT dentro de la
clusula SELECT, usted producira el mismo resultado utilizando un LEFT
OUTER JOIN y con mucha menos confusin.
Una CROSS JOIN producir el producto vectorial de las dos tablas que
se unen.
Los JOINs no se limitan a tablas diferentes. Usted puede hacer JOIN a
una tabla consigo misma (referido como un self join o autocombinacin).
Adems, puede incrustar las instrucciones SELECT dentro de otras
instrucciones SELECT, tambin conocidas como sub-consultas.
Un sub-query regular trata cada SELECT de forma independiente.
El argumento EXISTS tambin mejora el rendimiento de la consulta, ya
que SQL Server slo tiene que encontrar una sola aparicin en la tabla
para que la clusula WHERE sea verdadera.

Recuperacin de resultados nicos


Si slo desea devolver las filas nicas de una consulta, puede utilizar la
palabra clave DISTINCT.
DISTINCT se aplica a todas las columnas de la lista del SELECT. DISTINCT
tambin se puede combinar con la funcin COUNT para devolver el
nmero de filas en lugar de los datos de una tabla.
DISTINCT se vuelve un poco ms complicado cuando se trata de contar
el nmero de ocurrencias distintas dentro de una tabla.

Recuperacin avanzada de datos


Declaracin General de SELECT
La clusula SELECT define las columnas de datos a ser devueltas, y
puede incluir los operadoresTOP yvDISTINCT.
La clusula FROM define una o ms tablas para la recuperacin, basada
en la especificacin join. Los argumentos de bsqueda o subconsultas
se pueden aplicar dentro de una clusula WHERE para limitar los
resultados devueltos. Cuando se desea que los resultados devueltos
tengan un orden especfico, se puede aplicar un ORDER BY al conjunto
de resultados.

Agregacin de datos
Las funciones de agregacin ms comunes son:
COUNT (nmero de tems)
MIN (valor mnimo)
MAX (valor mximo)
AVG (valor promedio)
SUM (total de todos los valores)

Agregacin de mltiples permutaciones


Las consultas de agregacin se usan frecuentemente para resolver
problemas analticos dentro de una organizacin.
No todas las aplicaciones necesitan la potencia y la flexibilidad de
Analysis Services, pero aun as, es necesario proporcionar un conjunto
flexible de agregaciones para satisfacer el anlisis del negocio.
El operador CUBE se puede agregar a su declaracin SELECT con el fin
de calcular todas las posibles permutaciones de una consulta. Por
ejemplo, es posible tener los clientes, vendedores, territorios, el ao de
una orden, el mes de una orden, y el total de la orden. El operador CUBE
calculara el total de la orden para todas las permutaciones posibles de
las otras cinco columnas.
NULL se utiliza como un marcador de posicin en los resultados.
La funcin GROUPING se utiliza para distinguir entre los nulos dentro del
conjunto de resultados.
Si el NULL corresponde a la agregacin de los valores NULL en los datos
de origen, el resultado de la funcin
GROUPING ser 1. Si el valor NULL se genera como parte de la operacin
CUBE en el sentido de todos los valores, el resultado de la funcin
GROUPING ser 0.
SQL Server 2008 introduce una nueva caracterstica para GROUP BY,
GROUPING SETS, que le permite devolver mltiples niveles de
agregacin en un solo conjunto de resultados. Sin embargo, en lugar de
devolver todas las permutaciones posibles, como CUBE y ROLLUP,
GROUPING SETS le permite especificar las agrupaciones especficas que
le gustara obtener.

Filtrado de agrupaciones
As que, cuando sus requerimientos son filtrar una agrupacin, usted
podra asumir que todo lo que tendra que hacer es especificar la
clusula WHERE apropiada.
SQL Server primero aplica la clusula WHERE y filtra todas las lneas
menos de $ 30.000. Despus de que el filtro haya sido aplicado,
La clusula HAVING se utiliza para aplicar un filtro despus que se ha
producido una agregacin.

Ejecutando agregados
Mediante la combinacin de agregados con joins de desigualdad, se
puede calcular una variedad de agregados acumulados.
Las tablas derivadas se utilizan para combinar todos los pedidos juntos
por vendedor, quienes tienen ms de una orden en un solo da.
El clculo de las tablas dinmicas (pivot)
Algunas aplicaciones necesitan girar filas de datos en columnas, por lo
general, mientras realiza un agregado. Las tablas pivote se pueden
calcular mediante el operador PIVOT.
Dentro de la clusula FROM, se especifica el origen de su pivote, as
como la consulta general. El operador PIVOT permite especificar el
conjunto a calcular cuando los datos son pivotados.

Clasificacin de datos
La funcin ROW_NUMBER () numera secuencialmente el conjunto de
resultados del 1 a n basado en un orden especificado por el usuario.
Usted puede partir los resultados en grupos y el nmero de las filas
dentro de un grupo mediante la aplicacin de la clusula PARTITION BY
La funcin ROW_NUMBER no siempre devuelve los mismos resultados si
hay valores duplicados dentro de la clusula ORDER BY especificada.
Con el fin de manejar las relaciones como un conjunto de resultados
rankeados, se puede utilizar la funcin RANK. Los valores duplicados
recibirn el valor mismo de rango, pero se producirn huecos en la
secuencia cuando existan vnculos.
La funcin DENSE_RANK nmera un conjunto de resultados, dando
valores duplicados del mismo rango. Sin embargo, ninguno de los
huecos en la secuencia de rango son eliminados.
NTILE se utiliza para dividir un conjunto de resultados en N cubos de
tamao aproximadamente igual.

Agregar conjuntos de resultados


Usted puede devolver varios resultados de un solo lote, pero las
aplicaciones necesitan trabajar con cada conjunto de resultados de
forma independiente. Siempre y cuando los conjuntos de resultados
tengan la misma estructura, se pueden combinar todos los resultados en
un nico conjunto de resultados mediante el uso de UNION / UNION ALL
UNION combinar el conjuntos de resultados, eliminando los duplicados.
UNION ALL combinar el conjunto de resultados preservando los valores
duplicados.
T-SQL tiene dos operadores diseados para comparar rpidamente dos
conjuntos de resultados. INTERSECT devolver resultados en los que
matchean las filas en el lado izquierdo y derecho. EXCEPT devolver
las filas de la izquierda que no existen en el lado derecho
INTERSECT normalmente puede ser reemplazado por un INNER JOIN, un
EXCEPT no es tan simple.
Usted puede intentar usar una join de desigualdad en lugar de un
EXCEPT.

Expresiones de tabla comunes


Las expresiones de tabla comunes (CTE) se introdujeron en SQL Server
2005 para incluir la posibilidad de embeber rutinas iterativas en T-SQL.
Una CTE se compone de dos partes:
Una rutina que contiene una consulta de anclaje contra la cual una
segunda consulta recursiva es ejecutada
Una consulta externa que hace referencia a la rutina y especifica el
nmero de niveles de recursividad

Consulta de datos XML


SQL Server proporciona un tipo de datos que almacena los datos XML,
as como proporciona acceso completo a consultar los datos XML
Si slo desea devolver un documento XML almacenado en una tabla, es
suficiente con incluir la columna en la lista del SELECT.
Si quiere una devolucin de las filas que coinciden con un criterio
especificado, puede utilizar el mtodo query
Independientemente de la configuracin de intercalacin (collation) de
una base de datos, todos los elementos XML distinguen maysculas y
minsculas,
Hay cuatro clusulas que se pueden utilizar para dar formato a los datos
XML: RAW, AUTO, EXPLICIT, y PATH.
Si su aplicacin requiere que el documento XML se devuelva como un
tipo de datos XML en lugar de una cadena de caracteres, es necesario
especificar la directiva TYPE.
Al devolver los resultados XML, los valores NULL se descartan
automticamente. Esto puede causar problemas para las aplicaciones de
lectura de la estructura XML, ya que no todos los elementos estn
incluidos.
La clusula FOR XML tambin se puede utilizar para devolver un
esquema XML (XSD).
La directiva AUTO proporciona una manera simple y directa para
devolver datos en un formato XML centrado en atributos.
La opcin PATH y el modo EXPLICIT permiten moldear el formato de un
documento XML para adaptarse a cualquier requerimiento.

Manipulacin de datos
Lo bsico para la capacidad de manipular los datos es gestionar las
operaciones y el bloqueo dentro de una base de datos.

Insertando datos
En esta seccin, usted aprender cmo construir una instruccin INSERT
bsica que especifica los datos que se introducen en una tabla.
La lista de columnas para una declaracin INSERT es opcional, siempre y
cuando se especifique un valor para todas las columnas en la tabla.
Antes de SQL Server 2008, slo se poda insertar una fila a la vez en una
tabla cuando se utiliza la clusula VALUES. Ahora se pueden realizar
inserciones de varias filas repitiendo el conjunto de valores de datos.
Mediante la sustitucin de la clusula VALUES con cualquiera declaracin
SELECT vlida, puede insertar datos en una tabla basados en datos que
ya existen en una o ms tablas.

SELECT INTO
La declaracin SELECT INTO combina SELECT, INSERT, y CREATE TABLE
en una sola declaracin. En base a los nombres de Columna y los tipos de
datos, SQL Server crea una nueva tabla con el nombre definido por la clusula
INTO

Actualizacin de los datos


Con el fin de modificar los datos que se almacenan en una tabla, es
necesario utilizar una declaracin UPDATE.
A menos que las filas afectadas por un UPDATE estn restringidas por las
clusulas FROM y/o WHERE, cada fila de la tabla se modificar.
La clusula SET define la columna(s) a modificar. El nuevo valor de la
columna a modificar puede ser:

Un valor esttico
El resultado de un clculo
Una variable
Una columna de una tabla o una funcin

Eliminacin de datos
Si usted necesita eliminar los datos de una tabla, puede ejecutar una
declaracin DELETE.
La forma ms simple de una declaracin DELETE slo requiere un
nombre de tabla con la palabra clave FROM opcional.
Al igual que se vio con la declaracin UPDATE, si no restringe las filas
afectadas por la declaracin DELETE utilizando una clusula WHERE o
FROM, usted har DELETE a todas las filas de una tabla.

TRUNCAR
Si tiene que eliminar todas las filas de una tabla mediante una forma
rpida y eficiente, TRUNCATE proporciona un mejor rendimiento que el
uso de un DELETE sin una clusula WHERE
TRUNCATE TABLE slo se puede utilizar para eliminar todas las filas de
una tabla. No se puede eliminar slo una parte de las filas. TRUNCATE
TABLE slo se puede ejecutar en tablas que no son referenciadas por
una FOREIGN KEY.

Sentencia MERGE
MERGE le permite realizar mltiples INSERT, UPDATE y DELETE en una
sola sentencia.
La clusula INTO especifica la tabla destino para las operaciones INSERT,
UPDATE y DELETE. La clusula USING ... ON especifica la tabla o consulta
para aplicar como condicin de bsqueda para los criterios de
coincidencia (matching). Las clusulas WHEN especifican las acciones a
realizar en funcin de si hubo o no coincidencia en los criterios de
bsqueda.

Clusula OUTPUT
Es posible que necesite recuperar el estado de las filas que estn siendo
modificadas. En el marco de las operaciones de DML, SQL Server ofrece
dos tablas especiales denominadas inserted y deleted. Estas tablas son
creadas automticamente
Las tablas inserted y deleted estn en el mbito de una conexin y no
pueden ser accedidas por cualquier otro usuario. Estas tablas existen
siempre que una modificacin de datos est en curso, la transaccin
est abierta, y adems son vlidas slo para la modificacin de los datos
que actualmente est siendo ejecutada.
La tabla inserted contiene el estado de la(s) fila(s) modificada(s)
despus que ya se producido la modificacin, denominado como la
imagen despus. La tabla deleted contiene el estado de la(s) fila(s)
modificada(s) antes de la modificacin de los datos, conocida como la
imagen antes.
La tabla deleted siempre estar vaca. Cuando se ejecuta una
instruccin DELETE, las filas se eliminan de la tabla, y la tabla inserted
siempre estar vaca.
slo se poda acceder a las tablas inserted y deleted desde dentro un
trigger. Ahora puede acceder a estas dos tablas directamente en el
mbito de una declaracin INSERT, UPDATE, DELETE, o MERGE mediante
la utilizacin de la clusula OUTPUT.
La clusula OUTPUT se puede utilizar de dos maneras dentro de una
operacin DML:
1. Para devolver como resultado el contenido de las tablas insertadas o
eliminados directamente a una aplicacin.
2. Para insertar el contenido de las tablas inserted y/o deleted en una
tabla o variable de tabla.

Gestin de Transaccin
Una caracterstica fundamental de cualquier motor de base de datos es
garantizar la consistencia de datos al tiempo que permite el mximo
acceso simultneo a los mismos.
Cada vez que un usuario realiza un cambio a los datos, puede decidir ya
sea guardarlos, COMMIT, o descartarlos, ROLLBACK.
Cada unidad de trabajo que usted enve a SQL Server es una
transaccin. Cada transaccin est delimitada ya sea implcita o
explcitamente.
Una transaccin se construye con BEGIN TRAN, seguido por uno o ms
comandos a ejecutar. La operacin es finalizada por un COMMIT TRAN o
ROLLBACK TRAN. Una transaccin explcita se produce cuando usted
escribe el cdigo BEGIN TRAN. . . COMMIT TRAN / ROLLBACK TRAN. Una
transaccin implcita se produce cuando slo hay que ejecutar un
comando tal como un INSERT, UPDATE, o DELETE y deja en manos de
SQL Server anteponer el o los comando(s) con un BEGIN TRAN y finalizar
el lote con un COMMIT TRAN.
BEGIN TRAN iniciar una nueva transaccin. COMMIT TRAN guarda la
transaccin ms interna.
ROLLBACK TRAN revertir todas las transacciones para la conexin,
deshaciendo cualquier cambio que se haya hecho, y liberando todos los
bloqueos.
BEGIN TRAN y COMMIT TRAN delimitan una transaccin.
Los tipos de bloqueo utilizados por SQL Server son:

Compartido (shared)
Exclusivo (exclusive)
Actualizacin (update)
El tipo de bloqueo que se asigna depende de la operacin que se realiza.
Usted slo puede tener un tipo de bloqueo asignado a un recurso a la
vez.
Un bloqueo compartido se asigna para una sentencia SELECT. Dado que
una declaracin SELECT no modifica ningn dato, puede tener varios
bloqueos compartidos sobre un solo recurso en cualquier momento. Un
bloqueo compartido evitar que ocurra un bloqueo exclusivo.
El bloqueo exclusivo evitar que cualquier otra conexin acceda al
recurso bloqueado hasta que la transaccin se haya completado

Los bloqueos tambin se pueden asignar a tres niveles diferentes:

Fila
Pgina
Tabla
SQL Server administra automticamente el nivel de recursos para un
bloqueo, en base a la minimizacin de los recursos requeridos para
mantener un bloqueo.
SQL Server realiza una suposicin sobre el nivel de bloqueo necesario,
basndose en las estadsticas proporcionadas por el optimizador.
La granularidad de un bloqueo es muy importante para la concurrencia
en una aplicacin.
La extensin de bloqueo en SQL Server est diseada para adquirir
bloqueos por el menor tiempo posible.
Cuando un recurso se bloquea y otra conexin necesita adquirir un
bloqueo en el mismo recurso, pero con un bloqueo que compite, la
segunda conexin tendr que esperar a que el anterior bloqueo sea
liberado.
La pieza final del rompecabezas de la gestin de transacciones es el
nivel de aislamiento. Los niveles de aislamiento determinan qu tipos de
bloqueos se realizan y cuando estos bloqueos pueden ser liberados
durante la transaccin. Niveles de aislamiento:
Lectura no confirmada (Read Uncommitted)
Lectura confirmada (Read Committed)
Lectura repetible (Repeatable read)
Serializable
Instantnea (Snapshot

Seguimiento de cambios
SQL Server 2008 incluye dos nuevas caractersticas para realizar un
seguimiento automtico del cambio de datos: seguimiento de cambios
(change tracking) y captura de datos modificados (change data capture).
El seguimiento de cambios captura el hecho de que una fila se ha
cambiado en una tabla, pero no registra el dato real que se ha
cambiado. La captura de datos capta el hecho de que una fila se cambi
en una tabla, as como los datos reales que se cambiaron.

Seguimiento de los cambios


El seguimiento de cambios est limitado a un registro de cambio que se
le ha hecho a una fila dentro de una tabla.
Los cambios son capturados y registrados usando un proceso ligero,
sincronizados y almacenados en una tabla de cambios. La sobrecarga
asociada con el seguimiento de cambios es muy pequea y la mayora
depende del tamao de la clave primaria y el modo de control de
cambios que est utilizando.
La tabla de seguimiento de cambios almacena la clave primaria, un
nmero de versin para la creacin de la fila, un nmero de versin para
el ltimo cambio a una fila, el tipo de operacin ejecutada para el
cambo, y las columnas modificadas durante una operacin
El control de cambios es una propiedad de base de datos que tiene que
estar habilitada para poder configurar el seguimiento de cambios para
una tabla individual. Adems de permitir el control de cambios, tambin
puede configurar la limpieza automtica en base a un intervalo de
retencin con el fin de minimizar la cantidad de informacin de
seguimiento que es almacenada.

Captura de datos modificados


Una vez habilitado, SQL Server capturar todos los cambios en la tabla
habilitada mediante un proceso asincrnico basado en el registro de
transacciones.
La tabla de cambios contiene columnas para rastrear el LSN, un nmero
de secuencia dentro de una transaccin, la operacin DML que causa el
cambio, una columna de mscara de bits para realizar un seguimiento
de qu columnas de la tabla de origen fueron modificadas durante una
actualizacin, y las columnas de la tabla original.

Vistas
SQL Server tiene un objeto llamado vista view, que le permite
almacenar declaraciones SELECT complejas en su base de datos.

Creacin de una vista


Una vista es simplemente una declaracin SELECT a la que se le ha dado
un nombre y almacenado en unabase de datos. La principal ventaja de
una vista es que una vez creada acta como una tabla para cualquier
otra declaracin SELECT que se desea escribir.
Aunque una vista es un nombre almacenado para una declaracin
SELECT, el SELECT definido para la vista puede hacer referencia a otras
tablas, vistas y funciones. La declaracin SELECT no puede:
Contener las clusulas COMPUTE o COMPUTE BY
Usar la palabra clave INTO
Usar una clusula OPTION
Hacer referencia a una tabla temporal o variable o cualquier otro tipo.
Contener una clusula ORDER BY a menos que se especifique un
operador TOP
La vista puede contener varias declaraciones SELECT, siempre y cuando
usted utilice los operadores UNION o UNION ALL.
Sustitucin de consulta
Cuando se hace referencia a una vista, SQL Server sustituye el nombre
de la vista con la declaracin SELECT definida por la vista, vuelve a
escribir la consulta como si no hubiera referencia a la vista, y luego
enva la consulta reescrita al optimizador.

Modificar datos mediante una vista


Puede realizar modificaciones a los datos a travs de una vista, siempre
y cuando se cumplen los siguientes requisitos:
La modificacin de los datos debe hacer referencia exactamente a
una tabla
Las columnas de la vista deben hacer referencia directa a las
columnas de una tabla
La columna no puede ser derivada desde una agregacin
La columna no puede ser calculada como el resultado de un UNION
/ UNION ALL, CROSS JOIN, EXCEPT o INTERSECT
La columna que se est modificando no puede estar afectada por
las clusulas DISTINCT, GROUP BY, o HAVING
La clusula WITH CHECK OPTION obliga a que los nicos datos que
pueden manipularse, a travs de la vista, tambin deban poder ser
recuperados cuando se realiza el SELECT desde la vista.

Creacin de una vista indexada


Cuando es creada una vista normal, SQL Server slo almacena la
definicin de la vista, que luego es sustituida por el optimizador de
consultas para las sentencias SELECT emitidas contra dicha vista.
Cuando se indexa una vista, SQL Server ejecuta la declaracin SELECT
definida por la vista, almacena el conjunto de resultados, y luego
construye el ndice.
Las vistas indexadas tienen una larga lista de requisitos para poder ser
construidas. Los requisitos para una vista indexada derivan del hecho de
que los datos han de ser materializados en disco en una manera que no
cambia y los datos dentro del ndice tambin tienen que ser fijos.
Algunos de los requisitos para crear una vista indexada son:

La declaracin SELECT no puede hacer referencia a otras vistas


Todas las funciones deben ser deterministas
No se permiten AVG, MIN, MAX, STDEV DESVESTP, VAR, y VARP
El ndice creado debe ser a la vez clustered y unique
ANSI_NULLS debe haber sido configurado en ON, cuando se
crearon la vista y cualquiera de las tablas referenciadas en la vista.
La vista debe ser creada con la opcin SCHEMABINDING
La declaracin SELECT no contiene subconsultas o outer joins, EXCEPT,
INTERSECT TOP, UNION, ORDER BY, DISTINCT, COMPUTE / COMPUTE BY,
CROSS / OUTER APPLY, PIVOT, o UNPIVOT
la principal ventaja de una vista indexada es que los datos ya estn
materializadas y no tienen que ser calculados sobre la marcha como en
una vista regular. Las vistas indexadas pueden proporcionar una
significativa ganancia de rendimiento cuando se realizan consultas que
combinan grandes volmenes de datos en conjunto, tales como
agregados. Las vistas indexadas tienen que ser mantenidas cuando se
producen cambios en las tablas subyacentes, por lo que una vista
indexada no debera crearse contra tablas que reciben grandes
volmenes de modificaciones de datos.

Sustitucin de consultas
Las consultas que hacen referencia a la vista indexada no sustituyen a la
definicin de la vista, sino que devuelven los resultados directamente
desde la vista indexada. Los resultados pueden ser devueltos
directamente, porque en trminos de almacenamiento, la vista indexada
es de hecho una tabla que mantiene el motor de almacenamiento.
la sustitucin de consulta va un paso ms all cuando est presente una
vista indexada. Normalmente, el optimizador seleccionar los ndices
creados sobre las tablas referenciadas en una consulta si se determina
que un determinado ndice mejorar el rendimiento de la consulta.

También podría gustarte