- Un indice es una subconsulta que vamos a tener almacenada en nuestra bd, de manera que se cada vez que realice la consulta sea más eficiente.
- Hay veces donde no es necesario crear un indice, sólo debemos actualizarlo, para que incluya más columnas.
Introducción al curso
Cómo aprenderás sobre optimización de bases de datos en SQL Server
¿Por qué es importante optimizar tu base de datos?
Lista de requerimientos
Instalación de herramientas
Instalación de la base de datos
Analizar un plan de ejecución
Conociendo los índices
Analizar las consultas para crear índices
¿Cómo nos pueden ayudar los índices?
Cuál índice utilizar y cómo forzar uno en específico
¿Siempre son buenos los índices?
Optimización de consultas
Qué es Merge y cómo podemos utilizarlo
Distintas opciones de utilizar Merge
Qué es un Trigger y cómo podemos crearlo
Manejo de errores en trigger
Triggers a nivel administrativo
Qué es un Constraint y cómo funciona
Tablas versionadas
Utilizando Full Text Search para búsquedas
Queries más inteligentes
Cómo funcionan las funciones tabla
Tipos de funciones
Cómo funcionan las vistas
Procedimientos almacenados
Tablas temporales vs. tablas variables
Optimización de base de datos
Configuración de un Database Mail
Planes de mantenimiento: ordenar los índices en nuestra base de datos
Planes de mantenimiento: estrategia de respaldos
Planes de mantenimiento: log de base de datos con un tamaño controlado
Configurando TempDB
Monitoreo
Monitoreo con sp_who3
Monitoreo de actividades
Conclusión
Conclusión del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 20
Preguntas 11
Una de las mayores ventajas de los índices es que cuando el manejador de BD se encuentra un índice evitamos un “escaneo completo de la tabla” lo que hace que cuando tenemos grandes cantidades de datos en nuestras tablas, la mejora puede ser muy importante.
Muy relacionado con el anterior… al evitar “escaneos completos de las tablas”, evitamos los siguientes problemas: Sobrecarga de CPU, sobrecarga de disco y concurrencia.
Con los índices evitamos que el manejador de BD tenga que hacer lecturas secuenciales.
Los índices nos permiten una mayor rapidez en la ejecución de las consultas tipo SELECT lo que sea WHERE …
Y por último será una ventaja para aquellos campos que no tengan datos duplicados, sin embargo, si es un campo con valores que se repiten continuamente (Ej. Masculino/Femenino) no es tan aconsejable su uso.
Si quieres saber mas sobre los indices y saber cuando usarlos te dejo este articulo 👀🙋🏾♂️
Yo utilizo mucho, parar revisar los indices de cada tabla.
sp_helpindex [Sales.Invoices]
Después de analizar el plan se recrea el índice incluyendo las columnas que no cubre el indice actual.
CREATE NONCLUSTERED INDEX [FK_Sales_Invoices_ContactPersonID] ON [Sales].[Invoices]
(
[ContactPersonID] ASC
)
INCLUDE([InvoiceID],[AccountsPersonID]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = ON, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [USERDATA]
GO
Con todo respeto, pero veo muy pobre el ejercicio. Por ejemplo, saber el verdadero concepto de un índice, los agrupados y no agrupados, mejores tips para usarlos.
El índice de una base de datos es una estructura de datos que mejora la velocidad de las operaciones, por medio de un identificador único de cada fila de una tabla, permitiendo un rápido acceso a los registros de una tabla en una base de datos.
Características
Los índices pueden ser creados usando una o más columnas, proporcionando la base tanto para búsquedas rápidas al azar como de un ordenado acceso a registros eficiente.
Los índices son construidos sobre árboles B, B+, B* o sobre una mezcla de ellos, funciones de cálculo u otros métodos.
Aquí mi consulta ya optimizada :
INDICE = SUB CONSULTA - EFICIENCIA EN CONSULTAS
Estas clases están buenísimas
Muy interesante la clase.
Comparto el resultado de mi práctica, saludos. 😁
Mi aporte de hoy :
CREATE NONCLUSTERED INDEX [FK_Sales_Invoices_ContactPersonID] ON [Sales].[Invoices]
(
[ContactPersonID] ASC
)
INCLUDE([InvoiceID],[AccountsPersonID]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = ON, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [USERDATA]
GO
SET STATISTICS IO ON
SELECT [InvoiceID]
,[ContactPersonID]
,[AccountsPersonID]
FROM [WideWorldImporters].[Sales].[Invoices]
WHERE [ContactPersonID] >= 3032 AND
[ContactPersonID] <= 3035;
Aquí esta el código de mi practica
SELECT [InvoiceID]
,[ContactPersonID]
,[AccountsPersonID]
FROM [WideWorldImporters].[Sales].[Invoices]
WHERE [ContactPersonID] >= 3032 AND
[ContactPersonID] <= 3035;
Un índice es la manera que tiene las bases de datos para paginar grupos de resultados en memoria, una buena analogía es el índice de un libro, cuando sabemos cuál es la página del capítulo por el cual estamos interesado es más rápido ir al apartado que nos interesa.
Tenemos dos tipos de índices clusterizados y no clusterizados y por tabla solo podemos tener un indice clusterizado.
Configuración de la consulta:
SELECT [InvoiceID]
,[ContactPersonID]
,[AccountsPersonID]
FROM [WideWorldImporters].[Sales].[Invoices]
WHERE [ContactPersonID] >= 3032 AND
[ContactPersonID] <= 3035;
SET STATISTICS IO
Hace que SQL Server muestre información relacionada con la cantidad de actividad de disco generada por las instrucciones Transact-SQL.
SET STATISTICS IO { ON | OFF }
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?