lunes, 26 de junio de 2017

Índices en SQL Server - 1 de 2



Es una estructura auxiliar que sirve para optimizar las consultas. Mediante esta estructura, al realizar una consulta SQL Server realizará menos operaciones para devolver los resultados y la consulta se realizará mas rápidamente ya que los datos están estructurados de forma que sea mas sencillo localizarlos.

Algo muy similar a los Indices creados por Sql Server, es el índice de un libro, en una página indica en que página del libro está cada capítulo, y además podemos saber también, que apartados hay dentro de un capítulo y en que página están. En el caso de una base de datos, todos los registros de esta, se almacenan en páginas, después se crean unos índices que indican en que página de datos está cada registro y por encima de estos índices, se crean otros subíndices que almacenan la cabecera de cada índice. Además se crearía una cabecera principal que almacenaría a su vez la cabecera de estos subíndices.

Como se almacenan los datos
  • Cada registro de cada tabla, se almacena en una página de datos estas páginas tienen un tamaño de 8 kb. A un grupo de ocho páginas de datos se le llama Extensión.
  • Las filas no se almacenan en un orden concreto y no hay un orden detallado de la secuencia de las páginas de datos.
  • No existe una lista que almacene la estructura de las páginas de datos.
  • Cada vez que se inserta un nuevo registro en una página de datos llena, esta se fracciona creandose otra página de datos.
Como se accede a los datos

1. SQL Server verifica si existen índices
2. En caso de que si haya índices, el optimizador de consultas verifica si es mas sencillo realizar la consulta usando los índices o sin usarlos 
  • Sin indices:
    • Va a la primera hoja de datos de la tabla
    • Busca página por página examinando todas las filas de cada página
    • Selecciona las filas que cumplen la consulta
  • Con índices:
    • Usa la estructura de árbol del índice para buscar las filas que cumplen la consulta.
    • Una vez sabe donde están extrae estas filas. 
Ventajas y desventajas de los índices

Los indices abrevian la recuperación de los datos, sin índices tendríamos que recorrer todas las páginas de datos hasta encontrar las filas que cumplen la consulta, sobre todo aceleran las consultas que combinen varias tablas y agrupen u ordenen datos.

Como almacena los datos la base de datos:
  • Si los datos estan sin ordenar se llaman montón. Un montón va a ser un grupo de páginas y cada página tiene 8Kb.
  • Si no tengo indices en la tabla recorro toda la tabla, con lo cual tengo que realizar muchas idas y salidas de datos en las páginas.
  • Con un indice busca los datos con un orden lógico interno, sin necesidad de buscar en todas las páginas.
  • Una página solo puede tener datos de una tabla.
  • Cuando creamos un indice incrementamos el tamaño de la base de datos.
Existen dos tipos de indices:

1. Índices Agrupados:
  • Un indice agrupado por tabla.
  • Los datos se reordenan por el campo indexado.
  • Los datos se colocan en orden alfabético hasta ocupar los 8 Kb que ocupa cada página.
  • Cuando una página está completa, se divide en otra página para dar entrada a nuevos datos.
  • Cuando inserto un indice nuevo, las páginas antiguas se borran y se crean las nuevas páginas ya ordenadas alfabéticamente.
  • La estructura se divide en varios niveles, por un lado está el nivel de hoja de los datos, otro nivel lo forman las páginas de indice y el último nivel está formado por la raiz.
  • Una página solo puede tener un nivel raiz, pero puede tener más de un nivel de hoja de indices.
  • La página de indices y la página de datos coinciden en su orden de colocación.
  • En el momento de insertar datos, se dividen las páginas para poder insertar el dato colocado alfabéticamente, el problema es que se fragmenta la página de datos y la página de indices, esto provoca que se tengan que hacer búsquedas más largas, debido a que buscamos en el indice, en la página de datos y en las páginas fragmentadas.
  • Los indices agrupados no deben realizarse sobre columnas que tengan muchas modificaciones y actualizaciones, debido a que los datos se fragmentaran.
  • Realizar indices agrupados sobre columnas en las que se realicen búsquedas exactas o intervalos de valores.
  • Un indice agrupado sería como un índice de un Diccionario, busco por la letra ordenada alfabeticamente y encuentro la palabra que deseo en muy poco tiempo.
  • La aplicación no siempre utiliza el indice, depende de la consulta y no podemos controlar que utilice el indice. Normalmente siempre lo utiliza. 
  • Se puede realizar sobre columnas con datos duplicados, aunque conviene que sea sobre datos que no esten muy repetidos.
  • En caso que hubiese elementos duplicados, se genera un indice único interno propio del indice.
  • Se puede dejar un espacio en las páginas para que no las fragmente al insertar nuevos datos.

¿Cuantas páginas de indices se pueden generar?

Las páginas de indices tambien son de 8Kb, con lo cual, cuando se llena un indice, se crea otra pagina de indices a su lado. Los 8Kb de cada página son de tamaño fisico, no en memoria.

Cuando hacemos una Primary Key, generamos un indice agrupado, aunque también se puede decir que no lo haga poniendo después de Primary Key la palabra nonclustered.


Ejemplo de indices agrupados:


Realizo una consulta por el campo indexado: Busco H.
La búsqueda comienza por la raiz, compara el valor a buscar H con el dato A, selecciona si el dato que busca es mayor o menor que el que compara. Como el dato A es menor, continua con el dato P. Como el dato P es mayor al dato H, vuelve y ya sabe en que página del indice debe buscar el dato. En la página de indices repite el mismo proceso, compara con el dato A, compara con el dato E y compara con el dato I, como el dato I es mayor al dato H, vuelve y sabe que el dato que encuentra está en la página del dato E. Busca en la página E hasta encontrar el dato. 
Con este sistema solamente recorre dos páginas, teniendo las páginas sin indices recorrería todos los datos hasta dar con la H, devolviendo los datos de la consulta.


Espero haber ayudado en algo. Hasta la próxima oportunidad!












  

No hay comentarios:

Publicar un comentario

       

Etiquetas

Academy (23) Accediendo a datos con ADO .NET (31) Acceso a la red (30) Algoritmo (34) Algoritmos en JAVA (2) Ampliación de clases (2) APRENDA A PROGRAMAR COMO SI ESTUVIERA EN PRIMERO - Autores : IKER AGUINAGA (3) APRENDA A PROGRAMAR COMO SI ESTUVIERA EN PRIMERO - Autores : IKER AGUINAGA (10) Aprendiendo a desarrollar en Windows 8 (5) Aprendiendo UML en 24 Horas (Autor : Joseph Schmuller ) (30) Arquitectura (29) Arquitectura del Computador (3) Arquitectura del Computador - Historia de la informática (1) Asignación de direcciones IP (23) Aspectos fundamentales de bases de datos (5) Auditoría de la dirección (2) Auditoría de Sistemas (3) Auditoría Informática - Un enfoque práctico - Mario G . Piattini y Emilio del Peso (7) Avanzado (23) Base de Datos (67) Básico (23) Bios (29) Business Productivity Online Suite - BPOS (3) Capa de Red (22) Capa de Transporte (16) Capítulo 1 - Documentos HTML5 (6) Capítulo 10. API Web Storage (2) Capítulo 11. API IndexedDB (4) Capítulo 12. API File (1) Capítulo 2. Estilos CSS y modelos de caja (7) Capítulo 3. Propiedades CSS3 (4) Capítulo 4. Javascript (6) Capítulo 5. Video y audio (6) Capítulo 6. Formularios y API Forms (8) Capítulo 7. API Canvas (5) Capítulo 8. API Drag and Drop (2) Capítulo 9. API Geolocation (2) CCNA1 v5.0 (212) CCNA1 v6.0 (23) CCNA2 v5.0 (26) CCNA3 v5.0 (25) CCNA4 v5.0 (23) CD-ROM (3) Chapter 1 How does Xamarin.Forms fit in? (7) Chapter 2 Anatomy of an app (5) Cisco (314) Cloud Computing (3) CNNA v5.0 Routing & Switching (233) CNNA v6.0 Routing & Switching (2) Codigo (2) Computadora (32) Configuración (29) Configuración de un sistema operativo de red (21) Control (29) Creación de tipos de datos y tablas (3) Creación y Administración de bases de datos (3) Creando la Interface de la Aplicación Windows (50) Creating Mobile Apps with Xamarin.Forms (13) Cuenta (29) Curso (32) Curso Aprendiendo a Programar (25) Datos (3) Desarrollando en Windows 8 - AVANZADO (2) Desarrollando en Windows 8 - BÁSICO (3) Desarrollando en Windows 8 - INTERMEDIO (2) Desarrollo (2) Desarrollo .Net (21) Desarrollo avanzado de Windows Store Apps usando C# (1) Desarrollo basado en conceptos de Ingeniería de Software para Visual Studio (2) DESARROLLO DE APLICACIONES WINDOWS CON MICROSOFT .NET (37) DESARROLLO DE APLICACIONES WINDOWS CON MICROSOFT .NET (Autor: Luis Dueñas Huaroto) (29) Desarrollo en Microsoft Visual Studio (44) Desarrollo en Microsoft Visual Studio - AVANZADO (15) Desarrollo en Microsoft Visual Studio - BÁSICO (14) Desarrollo en Microsoft Visual Studio - INTERMEDIO (18) Desarrollo en Windows Phone 8 (13) Diagnostico (4) Diagrama (3) Diagramas de actividades (2) Diagramas de colaboraciones (2) Diagramas de secuencias (2) Digital (2) Diplomado (2) Disco (29) Disco Duro (4) Diseño de aplicaciones de Windows 8 en HTML 5 (7) Dispositivos Electrónicos (11) Doctorado (2) Ejemplos (3) Ejemplos de algoritmos (27) El camino hacia el CSS3 (3) El diseño web flexible (6) El elemento de diseño Canvas (3) El enfoque de los sistemas (3) El flujo de un programa (2) El gran libro de HTML5 - CSS3 y Javascript - Autor: Juan Diego Gauchat (55) El principio de organicidad (7) Electrónica (2) Elementos de un sistema (5) Empresas (2) Entrada y salida (4) Entropía y neguentropía (7) Estrategia (2) Estructura de un programa Java (12) Estructuras de almacenamiento (10) Estructuras de control (6) Estructuras de las tablas en SQL Server (2) Estructuras fundamentales de los datos (2) Ethernet (21) Evolución y Familias de los Microprocesadores (15) Exámen (23) Exploración de la red (23) Extensión de clases (4) Facebook (4) Familia Intel (15) Forefront (8) Función (3) Funciones de una red (12) Funciones de una red informática (1) Fundamentos de C# para absolutos principiantes (17) Fundamentos de programación en Java (50) Generaciones de la computadora (5) Gestión (3) Gestión de riesgos - Auditoría de Sistemas (1) GONZALO MARTÍNEZ (1) Grupos Facebook (1) Harvard (29) Historia de las computadoras (11) HTML5 y CSS3 - Autor: Christophe Aubry (99) HTML5 y CSS3 aplicadal texto (7) HTML5 y CSS3 para los formularios (15) Imágenes (2) Implementación de Windows 7 (11) Información (31) Informática (29) Ingeniería (4) Instalar (29) Inteligencia (2) Inteligencia de Negocios con SQL Server (3) Intermedio (23) Internet (29) Internet Explorer 9 (3) Introducción a ASP.NET 5 (8) Introducción a Java (7) Introducción a jQuery (8) Introducción a la Auditoría de Sistemas (2) Introducción a la teoría general de sistemas (Oscar Johansen Bertoglio) (39) Introducción a Networking (2) Introducción a Window Forms (5) Introducción al acceso a datos con ADO .NET (9) Investigación de Operaciones (12) Java (52) Jump Start de consultas en las bases de datos de Microsoft SQL Server 2012 (8) La definición de un Sistema (6) La evolución del HTML y del CSS (3) La nueva sintaxis HTML5 (12) LA QUINTA DISCIPLINA en la práctica (Autor : Peter Senge) (28) Las animaciones en CSS3 (5) Las transformaciones CSS3 (11) Las transiciones con CSS3 (8) Licenciamiento Microsoft (3) Local Area Network (LAN) - Red de Area Local (2) Lógico (2) Los elementos de la estructura en html5 (9) Los elementos multimedia: audio y vídeo (2) Los estilos de caja en CSS3 (13) Los nuevos selectores de CSS3 (6) Maestría (2) Mantenimiento de Mouse y Teclado (2) Manual de Microsoft SQL Server - Full Transact SQL (68) Manual de soporte técnico para escuelas sobre windows 7 (42) Marco Teorico de Investigación de Operaciones (6) Medios de Almacenamiento (11) Medios de Networking (2) Mejorando la Interface de las Aplicaciones Windows (26) Memoria Tipos y Clases (5) Método (2) Metodología (1) Microsoft (324) Microsoft Lync 2010 (7) Microsoft Silverlight 4.0 (2) Microsoft Virtual Academy (356) Modelo (2) Modelo OSI y TCP-IP (2) Modelos con poco grado de dificultad de Programación Lineal - Investigación de Operaciones (13) Modelos con razonable grado de dificultad de Programación Lineal - Investigación de Operaciones (10) Modelos de desafio de Programación Lineal - Investigación de Operaciones (5) Modelos difíciles de Programación Lineal - Investigación de Operaciones (5) Modelos Fáciles de Programación Lineal - Investigación de Operaciones (13) Modelos lineales con solver (3) Modulo (23) Movimiento (2) Mozilla (29) MS SQL Server (77) MS Virtualization para Profesionales VMware - Gestión (3) MS Virtualization para Profesionales VMware- Plataforma (4) MVA (263) Negocio (2) Nivel Avanzado Desarrollo .Net (6) Nivel Básico Desarrollo .Net (11) Nivel Intermedio Desarrollo .Net (8) Normas técnicas peruanas y su evolución - Auditoría de Sistemas (1) Nube Privada - Avanzado (6) Nube Privada - Básico (6) Nube Privada - Intermedio (6) Office 365 (3) Optimización de Escritorio (10) Optimización de Escritorio - Avanzado (4) Optimización de Escritorio - Básico (3) Optimización de Escritorio - Intermedio (3) ORACLE 10g - ADMINISTRACIÓN Y ANÁLISIS (3) Oracle 10g y el Grid Computing (3) Organización aleatoria y secuencial (1) Partes principales de la Mainboard (12) Perceptron (2) Perfil (2) Periféricos de Entrada / Salida (15) Pesi (2) PHP y MySQL - Manual de aprendizaje para crear un sitio web - Autor : Olivier ROLLET (79) Plan (2) Plataforma (29) PMBOK (24) PMBOK - Guía de los fundamentos para la dirección de proyectos (24) PMBOK - INFLUENCIA DE LA ORGANIZACIÓN Y CICLO DE VIDA DEL PROYECTO (6) PMBOK - Introducción (11) PMBOK - PROCESOS DE LA DIRECCIÓN DE PROYECTOS (5) Prevención - Herramientas e Instrumentos de Medida (9) Principios básicos de enrutamiento y switching (186) Proceso (2) Proceso de auditoría de sistemas informáticos (2) Programación en Android - Auor : Salvador Gómez Oliver (46) Programación paso a paso de C# - Autor : Nacho Cabanes (16) Protocolos y comunicaciones de red (17) Proyecto (2) Qué es un sistema (4) Red de Área Local Inalámbrica (WLAN) (4) Redes (30) Redes inalámbricas - WIRELESS - Conocimiento general (15) Redes neuronales (2) Redes y Comunicaciones (45) Reparación de Fuentes - UPS - Estabilizadores (10) Reparación de Impresoras (9) Reparación de Monitores (16) Router (29) Seguridad en la Nube (3) Seminario (23) Server (24) Sharepoint 2010 - Nivel Básico (6) Sharepoint 2010 - Niveles Avanzados (18) Sharepoint 2010 - Niveles Avanzados - Básico (8) Sharepoint 2010 - Niveles Avanzados - Intermedio (9) Sinergia y recursividad (4) Sistema (33) Sistema de Cableado Estructurado (9) Software (30) SOLUCIÓN GRÁFICA DE MODELOS DE PROGRAMACIÓN LINEALES - INVOPE (8) Soporte a Infraestructura (3) SQL (38) SQL Azure - Introducción (3) Subsistemas de control (4) Tablas (4) Tarjeta Principal del Sistema (10) Tarjetas de Interfaces (7) Tecnología (31) Tecnologías LAN (1) TEORÍA GENERAL DE SISTEMAS (1) Tic (2) Tipo (2) TML5 y CSS3 - Autor: Christophe Aubry (12) Trabajando con el Formulario (7) Un diseño HTML5/CSS3: dConstruct 2011 (3) Un diseño HTML5/CSS3: FlipThru (2) Un diseño HTML5/CSS3: The Cat Template (2) Usando Controles Windows Forms (12) Usando Herramientas de Datos de Visual Studio (6) Ventas (2) Virtualización Hyper - V Nivel Básico (5) Virtualización Hyper - V Nivel Intermedio (5) What’s New in Windows 8.1 Security (4) Window (29) Windows 7 Segunda Fase - AVANZADO (4) Windows 7 Segunda Fase - BÁSICO (6) Windows 7 Segunda Fase - INTERMEDIO (4) Windows 8 - Vista Previa (4) Windows 8.1 To Go (2) Windows Azure (3) Windows Phone 7 (2) Windows Server 2008 R2 (3) Windows Server 2012 - Gestión y Automatización (3) Windows Server 2012 R2 Essentials (7) Windows Server 2012: Almacenamiento (5) Windows Server 2012: Identidad y Acceso (4) Windows Server 2012: Revisión Técnica (7) Xamarin (1)

Páginas vistas en total según Google