2011-07-15 16 views
7

¿Cómo se puede determinar si el rendimiento obtenido en un SELECT al indexar una columna superará la pérdida de rendimiento en un INSERT en la misma tabla? ¿Hay un "punto de inflexión" en el tamaño de la tabla cuando el índice hace más daño que bien?Índices SQL Server 2008 - ganancia de rendimiento en consultas frente a pérdida en INSERT/UPDATE

Tengo una tabla en SQL Server 2008 con 2-3 millones de filas en un momento dado. Cada vez que se realiza una inserción en la tabla, también se realiza una búsqueda en la misma tabla utilizando dos de sus columnas. Estoy tratando de determinar si sería beneficioso agregar índices a las dos columnas utilizadas en la búsqueda.

+3

Elección graciosa de palabras, porque el artículo de Kimberly Tripp se llama "[The Tipping Point] (http://www.sqlskills.com/BLOGS/KIMBERLY/category/The-Tipping-Point.aspx)". Se considera la lectura definitiva con respecto a la determinación del uso del índice. –

+0

@dcp: thx, he estado buscando un nuevo avatar :) –

+0

Wow. Elección divertida de palabras de hecho! Definitivamente estaré leyendo ese artículo. Gracias por vincularlo. – TrailJon

Respuesta

4

Como todo lo demás relacionados con SQL, depende:

  • ¿Qué tipo de campos están? ¿Varchar? ¿En t? ¿Fecha y hora?
  • ¿Hay otros índices en la tabla?
  • ¿Necesitarás incluir campos adicionales?
  • ¿Cuál es el índice agrupado?
  • ¿Cuántas filas se insertan/eliminan en una transacción?

La única manera real de saber es compararla. Coloque los índices en su lugar y realice monitoreos frecuentes o ejecute un seguimiento.

+1

+1 para evaluación comparativa: la única forma ** verdadera ** de saber si otro índice ayuda o duele. No hay forma de determinarlo por medio de una fórmula: solo una bola de cristal ayudaría (la mía está en la tienda en este momento ...) –

0

Esto depende de su carga de trabajo y sus requisitos. A veces los datos se cargan una vez y se leen millones de veces, pero a veces no se leen todos los datos cargados.

A veces, las lecturas o escrituras deben completarse en un tiempo determinado.

0

caso 1: si la tabla es estática y se consulta en gran medida (por ejemplo, tabla de elementos en la aplicación Cesta de la compra), los índices en los campos apropiados son muy beneficiosos.

caso 2: si la tabla es muy dinámica y no se realizan muchas consultas a diario (p. Ej .: tablas de registro utilizadas para fines de auditoría), los índices ralentizarán las escrituras.

Si los dos casos anteriores son los casos límite, entonces construir índices o no crear índices en una tabla depende del caso anterior al que la tabla en disputa se acerca más.

Si no, déjelo a juicio del asesor de ajuste de consultas. Buena suerte.

Cuestiones relacionadas