No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

¿Cómo nos pueden ayudar los índices?

8/31
Recursos

Aportes 20

Preguntas 11

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

  • 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.

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

Muy interesante la forma en como puede usarse un índice para mejorar las consultas. Entiendo que el curso no abarca los temas muy a profundidad pero espero que, en un futuro, se realicen más cursos sobre temas relacionados para formación de DBA's.

Estas clases están buenísimas

Muy interesante la clase.

Comparto el resultado de mi práctica, saludos. 😁

Un indice es necesario analizar antes de crearlo,corregirlo o eliminarlo para que por medio de los planes de ejecucion los verifiquemos y por medio de la herramienta grafica del indice poder realizar la ejecucion correspondiente y mejorar el rendimiento de la consulta.
Que pena, el tema es tan importante y el profesor es tan malo.

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 }

Más info…