indices sql server

19
Índices Introducción.- Los índices son objetos de base de datos d rendimiento de las consultas. En este punto veremos la es los índices y sus tipos y características. Se verá como d es necesario y apropiado, que tipo de índice usar y como crean los índices se debenmantener para maximizar laperformance de las consultas, para ello existen varias herramientas que asisten en latarea de administración y mantenimiento de los índices. La tareas de reconstrucción, renombrado, y eliminación de ín Arquitectura de los índices Los índices están estructurados para facilitar una respue resultados. Los dos tipos de índices que SQL Serv agrupados. Los índices son aplicados a una o más columnas en ta Tablas indexadas son soportadas por todas las edic vistas indexadas son soportadas por las ediciones Server Developer. Las características de un índice afecta sistema y performance general. El Query Optimizer usará u la performance de la consulta.

Upload: jorgeb77

Post on 22-Jul-2015

112 views

Category:

Documents


3 download

TRANSCRIPT

ndicesIntroduccin.- Los ndices son objetos de base de datos diseados para mejorar el rendimiento de las consultas. En este punto veremos la estructura y el propsito de los ndices y sus tipos y caractersticas. Se ver como determinar cuando un ndice es necesario y apropiado, que tipo de ndice usar y como crearlos. Una vez que se crean los ndices se deben mantener para maximizar la performance de las consultas, para ello existen varias herramientas que asisten en la tarea de administracin y mantenimiento de los ndices. La administracin comprende las tareas de reconstruccin, renombrado, y eliminacin de ndices. Arquitectura de los ndices Los ndices estn estructurados para facilitar una respuesta rpida de conjuntos de resultados. Los dos tipos de ndices que SQL Server soporta son agrupados y no agrupados. Los ndices son aplicados a una o ms columnas en tablas o vistas. Tablas indexadas son soportadas por todas las ediciones de SQL Server 2005, y vistas indexadas son soportadas por las ediciones SQL Server Entreprise y SQL Server Developer. Las caractersticas de un ndice afecta el uso de los recursos del sistema y performance general. El Query Optimizer usar un ndice si este mejorar la performance de la consulta.

Leccin 07 ndices Propsito y estructura .Un ndice en SQL Server asiste al motor de base de datos en la ubicacin de los registros, tal como un ndice en un libro ayuda a ubicar informacin rpidamente. Sin ndices, una consulta deber buscar en todos los registros de la tabla en orden a encontrar coincidencias. Un ndice de base de datos una o ms columnas de valores de la tabla (llamadas clave del ndice) y punteros a los correspondientes registros de la tabla. Cuando se ejecuta una consulta usando la clave del ndice, el Query Optimizer utilizar el ndice para ubicar los registros que cumplen con la consulta. Un ndice es estructurado por el SQL Server Index manager como un rbol balanceado (B-tree). Un B-tree es anlogo a un rbol invertido con la raz del rbol arriba, y los niveles hoja abajo, con niveles medios entre ambos. Cada objeto en la estructura de rbol es un grupo de claves del ndice ordenadas llamadas pginas del ndice. Para un rendimiento ptimo, se crean sobre columnas que son comnmente usadas en las consultas. Por ejemplo, los usuarios pueden consultar la tabla de Clientes en base al apellido o al ID del cliente. Por lo tanto se deberan crear dos ndices para la tabla: un ndice por apellido y otro por ID del cliente. Para ubicar eficientemente a los registros, el Query Optimizer usa un ndice que concuerde con la consulta. El Query Optimizer usar el ndice por el ID del cliente cuando se ejecute la siguiente consulta: SELECT * FROM Clientes WHERE Cliente_ID = 798

Leccin 07 ndices Tipos de ndices .Hay dos tipos de ndices: agrupados (clustered) y no agrupados (non clustered). Ambos tipos de ndices son estructuras tipo B-tree. Un ndice agrupado contiene los registros de la tabla a nivel hoja del B-tree. Un ndice no agrupado es una estructura de ndice separada, independiente del ordenamiento fsico de los registros en la tabla. Si existe un ndice agrupado en un tabla, un ndice no agrupado utilizar al ndice agrupado para la bsqueda de los registros. En la mayora de los casos se crear antes un ndice agrupado que los ndices no agrupados sobre una tabla. ndices agrupados : Puede haber solo un ndice agrupado por tabla o vista, dado que estos ndices ordenan fsicamente la tabla o vista segn la clave del ndice agrupado. Este tipo de ndices es particularmente eficiente para consultas, dado que los registros de datos completos (en pginas de datos) son guardados a nivel de hoja del B-tree. El ordenamiento y la ubicacin de los datos en un ndice agrupado es anlogo al de un diccionario donde las palabras son ordenadas en forma alfabtica y las definiciones aparecen junto a las palabras.

ndices Tipos de ndices .-

Leccin 07

ndices agrupados :Cuando se crea una restriccin PRIMARY KEY en un tabla que no contiene un ndice agrupado, SQL Server crear uno y utilizar la columna de clave primaria como clave para el ndice agrupado. Si ya existe un ndice agrupado SQL Server crear un ndice no agrupado sobre la columna definida con una restriccin PRIMARY KEY. Una columna definida como la clave primaria es un ndice muy til porque los valores de la columna estn garantizados que son nicos. ndices sobre columnas de valores nicos son de menor tamao que los ndices sobre columnas con valores duplicados y generan estructuras de bsqueda ms eficientes.

Una columna definida con una restriccin UNIQUE genera automticamente un ndice no agrupado.

Leccin 07 ndices Tipos de ndices .ndices agrupados : Para forzar el tipo de ndice a ser creado para una columna o columnas, se puede especificar las clusulas CLUSTERED o NONCLUSTERED en los comandos CREATE TABLE, ALTER TABLE o CREATE INDEX. Suponga que se crea una tabla Personas que contiene las siguientes columnas: PersonaID, Nombre, Apellido y NumDocumento. La columna PersonID se define con la restriccin PRIMARY KEY, la columna NumDocumento con la restriccin UNIQUE. Para hacer un ndice agrupado para la columna NumDocumento y un ndice no agrupado para la columna PersonID, se crea la tabla usando la siguiente sintaxis: CREATE TABLE dbo.Personas ( PersonID smallint PRIMARY KEY NONCLUSTERED, Nombre varchar(39), Apellido varchar(40), NumDocumento char(11) UNIQUE CLUSTERED )

ndices Tipos de ndices .-

Leccin 07

ndices agrupados :Los ndices no se limitan a las restricciones. Se pueden crear ndices sobre cualquier columna o combinacin de columnas en una tabla o vista. ndices agrupados aseguran la unicidad internamente. Por lo que, si se crea un ndice agrupado sobre columnas con valores no nicos SQL Server crea un nico valor sobre las columnas duplicadas para servir de clave de ordenamiento secundaria. Para evitar el trabajo adicional requerido para mantener valores nicos sobre columnas duplicadas, generalmente se generan ndices agrupados sobre columnas con la restriccin PRIMARY KEY.

ndicesTipos de ndices .ndices no agrupados :

Leccin 07

Sobre una tabla o vista se pueden crear 250 ndice no agrupados o 249 ndices no agrupados y un ndice agrupado. Se debe primero crear un ndice nico agrupado sobre una vista previo a crear los ndices no agrupados. Esta restriccin no se aplica a las tablas. Un ndice no agrupado es anlogo a un ndice al final de un libro. Se puede usar el ndice del libro para ubicar las pginas que contienen una tema del ndice del libro. La base de datos usa los ndices no agrupados para encontrar registros segn una clave. Si no existe un ndices agrupado para la tabla, los datos de la tabla se encontrarn desordenados fsicamente y se dice que la tabla tendr la estructura de montn (heap). Un ndice no agrupado sobre una tabla montn contiene punteros a las filas de la tabla. Cada entrada en las pginas de ndice contiene un identificador de fila (RID, row ID). El RID es un puntero a una fila en un montn, y este consiste de un nmero de pgina, un nmero de archivo y un nmero de ranura. Si existe un ndice agrupado, las pginas de un ndice no agrupado contienen las claves del ndice agrupado en vez del RID.

ndices

Leccin 07

Obtener Informacin Almacenada (DML) .-

Bsquedas Sencillas (Ejemplos)

Obtener el contenido de la tabla Articulos. SELECT* FROM Articulos

Listar el nombre y el telfono de todos los Proveedores.SELECT nombrpro as Nombre, telefpro as Telf

FROM Proveedores

ndices

Leccin 07

Obtener Informacin Almacenada (DML) .Bsquedas Cualificadas. Cond. de Comparacin 1 (Ejemplos)

Las condiciones de comparacin son expresiones lgicas que permiten comparar una columna o expresin con otra columna, expresin o lista de columnas. Pueden adoptar una de las formas siguientes:exp operador_de_comparacin exp exp [NOT] BETWEEN exp AND exp exp [NOT] IN (lista de valores) campo [NOT] LIKE campo IS [NOT] NULL 'cadena_de_caracteres'

Encontrar los artculos cuyo precio unitario sea superior a 180 y su stock sea inferior o igual a 100.SELECT * FROM Articulos WHERE preunart > 180 AND stockart 1

ndices

Leccin 07

Obtener Informacin Almacenada (DML) .-

Ordenacin del Resultado (Ejemplo)

[ORDER BY colum1 { [ASC] | DESC } [, colum2 { [ASC] | DESC }, .... ] ]colum1, colum2, ...: son nombres de elementos (campos, expresiones o funciones) de la lista de seleccin o la posicin que ocupan en ella. ASC: quiere decir ordenacin ascendente (opcin por defecto) y DESC descendente. Listar los valores de los campos que componen el ndice de unicidad de la tabla Lineas (numped, numlin), por orden decreciente de n de pedido y de n de lnea. SELECT numped, numlin FROM Lineas ORDER BY 1 DESC, 2 DESC