Constantemente veo que la gente dice que los índices se ralentizan update
, delete
y insert
. Esto se usa como una declaración general, como si fuera un absoluto.
Mientras ajusto mi base de datos para mejorar el rendimiento, sigo encontrando esta situación que parece contradecir esa regla lógicamente para mí, y en ningún lado puedo encontrar a nadie que diga o explique de otra manera.
En SQL Server, y creo / presumo la mayoría de los otros DBMS, sus índices se crean en función de columnas específicas que especifique. Las inserciones y eliminaciones siempre afectarán a una fila completa, por lo que no hay forma de que no afecten el índice, pero las actualizaciones parecen un poco más únicas, pueden afectar específicamente solo ciertas columnas.
Si tengo columnas que no están incluidas en ningún índice y las actualizo, ¿se ralentizan solo porque tengo un índice en otras columnas de esa tabla?
Como ejemplo, digamos en mi User
tabla que tengo uno o dos índices, la clave principal que es una columna de Identidad / Incremento automático, y posiblemente otra en alguna columna de clave externa.
Si actualizo una columna sin el índice directamente en ella, como decir su número de teléfono o dirección, ¿se ralentiza esta actualización porque tengo índices en esta tabla en otras columnas en cualquier situación? Las columnas que estoy actualizando no están en índices, por lo que lógicamente, los índices no deberían actualizarse, ¿no? En todo caso, creo que se aceleran si uso los índices en la cláusula WHERE.
so there is no way they will not affect the index
a excepción de los índices filtrados ...