2010-08-05 23 views

Respuesta

14

Esto es en realidad el mismo tipo de pregunta:

¿Por qué tarda más tiempo para poner todas mis compras en el lugar correcto en mi cocina de dejar todo en las bolsas después de visitar mi tienda de comestibles ¿almacenar?

Esto se debe a que al almacenar sus comestibles, los quiere en una buena posición conocida para que luego sea más fácil encontrarlos.

Una base de datos tiene que hacer lo mismo.

  • Si tiene una tabla sin índice, solo puede agregar nuevos datos al final de la tabla.
  • Si tiene un índice, la base de datos tiene que realizar más trabajo. Probablemente aún pondrá el registro al final de la tabla, pero adicionalmente actualizará su índice para asegurarse de que si luego desea encontrar ese registro, lo encontrará más rápidamente que sin índice.

Esto también significa que agregar más índices ralentizará aún más las inserciones.

Debe quedar claro que solo desea crear un índice si también lo utilizará posteriormente. Si solo crea un índice y no lo usa luego para mejorar el rendimiento de una consulta, no es necesario tener el índice, ya que solo ralentizará las inserciones y no mejorará ninguna consulta.

+1

Me gusta la analogía ;-) . –

+0

Para que la analogía sea más pedante y correcta, diría que es como obtener dos de cada artículo de supermercado; un artículo va a la despensa en cualquier orden anterior, el artículo duplicado se pone en el banco de la cocina en orden alfabético. A menos que, por supuesto, use una tabla organizada por índice, en cuyo caso no se molesta en obtener el artículo para la despensa :) –

9

Una declaración INSERT tiene que agregar los datos a los bloques de datos de la tabla y actualizar los índices que la tabla haya definido.

Claramente, si tiene un índice, la inserción necesitará hacer un poco más de "trabajo" para actualizar el índice también.

1

Los índices le permiten almacenar más información (en bloques de índice) sobre los datos que facilitan la recuperación de datos. Obviamente, usted está haciendo un trabajo adicional inicialmente para beneficiarse más tarde (para selectas).

0

Si necesita borrar algunos datos en una etapa posterior de la tabla que insertó, ¿no sería una buena idea tener un índice sobre la mesa? El tiempo adicional necesario para insertar los datos en la tabla se puede compensar con las eliminaciones que se ejecutan más rápidamente en una tabla indexada (si las columnas indexadas se usan en la cláusula WHERE eliminada) ????

+0

Esto no responde la pregunta. Además, los consejos genéricos contra el uso de un índice (especialmente sin contexto específico) son consejos deficientes. –

Cuestiones relacionadas