Crear un índice en una mesa realmente ocupada

11

Tenemos una tabla con mucho de insert\selectcada vez (como 100 máquinas insertando \ actualizando cada segundo).

¿Cuál es la mejor manera de crear un índice en una tabla que no se puede bloquear ni siquiera por un segundo?

Si creo el índice, estoy seguro de que bloqueará las solicitudes, y no puedo hacerlo.

Es una mesa grande con 1 millón de filas +.

Racer SQL
fuente

Respuestas:

12

No existe tal opción como CREATE INDEX WITH (NOLOCK)(e incluso NOLOCKen una consulta toma bloqueos, solo menos que sin la pista).

Lo mejor que va a hacer es WITH (ONLINE = ON), que todavía tiene bloqueos al principio y al final de la operación (ambos relacionados con la compilación de planes relacionados con la tabla; consulte esta publicación de blog de Paul Randal para obtener más detalles ).

Esto reducirá significativamente el impacto de construir el índice en sus aplicaciones, pero no hay una forma práctica de eliminar por completo ese impacto. Además, esta característica no es gratuita: requiere Enterprise Edition.

Aaron Bertrand
fuente