RECONSTRUCCIÓN: ¿Índice agrupado, TABLA o ambos?


9

Tengo problemas para encontrar un recurso definitivo sobre esto en cualquier lugar, así que espero que un gurú pueda darme una respuesta aquí.

Tengo una tabla muy grande a la que tuvimos que agregar una columna. El índice agrupado está bastante fragmentado, y quiero hacer un ALTER INDEX REBUILDpara limpiarlo.

También hago normalmente ALTER TABLE REBUILDcuando cambio las columnas ya que esto limpia cualquier puntero o división de esa operación.

¿Necesito hacer ambas cosas ya que estamos hablando del índice agrupado, que es esencialmente la tabla?

Mi sospecha es que ALTER INDEX REBUILDen el clúster no se actualizará todo lo que la ALTER TABLEvoluntad, pero también me temo que ALTER TABLEno va a limpiar la fragmentación del índice.


La reconstrucción del IIRC no actualizará las estadísticas de columna. Duda que sea relevante ya que no sucederá en ninguno de los casos. :-)
Aaron Bertrand

Respuestas:


6

Si reconstruye el índice agrupado, no debería ser necesario reconstruir la tabla. Si la tabla era un montón (no tenía un índice agrupado), es posible que desee reconstruirla.


Leí anteriormente que cuando elimina una columna, debe hacer una, ALTER TABLE REBUILDya que esto solucionará los punteros que no se arreglan en la reconstrucción del índice. ¿Ya no es este el caso?
JNK

¿Qué punteros? Nunca he escuchado eso. Eliminar una columna no tiene ningún puntero, a menos que esté hablando de tipos de datos TEXT, NTEXT, IMAGE en SQL 2000.
mrdenny

1
Creo que mis preocupaciones son infundadas entonces ...
JNK

@JNK: sospecho que te refieres a DBCC CLEANTABLE cuando sueltas columnas que es lo mismo que reconstruir el índice agrupado stackoverflow.com/a/808368/27535 y dba.stackexchange.com/search?q=%2BDBCC+%2BCLEANTABLE
gbn

0

Reconstruye gotas y recrea el índice. Cuando crea un índice agrupado, reordena las filas de una tabla además de crear el CIX (una tabla sin CIX es un montón).


44
La reconstrucción no elimina ni vuelve a crear el índice agrupado. Dejar caer el índice agrupado convierte la tabla en un montón. SI la reconstrucción 'cayera y volviera a crear', tendría que haber un estado intermedio en el que la tabla sea un montón, lo cual no es cierto. Si no me cree que no hay una etapa de almacenamiento intermedio intermedio, tenga en cuenta que si se lograra dicho estado de almacenamiento intermedio intermedio, 'recrear' requeriría una especie, pero un vistazo rápido al plan de ejecución de reconstrucción revela que no hay ningún tipo.
Remus Rusanu

Saludos cordiales RR, disfruto leyendo tus publicaciones, pero no estoy seguro de por qué discutirías este punto. Ya he vinculado el MSDN oficial. Desde la sección "Reconstrucción de índices" aproximadamente a la mitad, primera afirmación: "La reconstrucción de un índice cae y vuelve a crear el índice". No hay ambigüedad en esa declaración. Aquí está de nuevo: msdn.microsoft.com/en-us/library/ms188388.aspx
Eric Higgins

1
BOL y MSDN pueden tener una mala elección de forma de redacción de vez en cuando, y luego una y otra vez ... Este sería el caso.
Remus Rusanu
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.