
SQL Server Rebuild vs Reorganize
SQL Server Rebuild vs Reorganize, en SQL Server, es posible realizar tanto un rebuild como un reorganize sobre los índices. Estas son operaciones relacionadas con el mantenimiento de los índices en la base de datos, y ambas tienen el objetivo de mejorar el rendimiento de las consultas optimizando los índices. Sin embargo, funcionan de manera diferente y se utilizan en diferentes situaciones dependiendo del grado de fragmentación de los índices.
1. Rebuild (Reconstruir Índices)
- Qué hace: El comando rebuild crea un índice completamente nuevo desde cero, eliminando el índice existente y reconstruyéndolo. Este proceso reorganiza los datos físicamente en las páginas de datos de la base de datos, eliminando cualquier fragmentación.
- Cuándo usarlo: Se recomienda realizar un rebuild cuando la fragmentación de un índice es superior al 30%.
- Efecto en el sistema: Esta operación es más intensiva que el reorganize, ya que requiere más recursos (CPU, memoria, disco) y bloquea el índice durante la operación, aunque en las versiones recientes de SQL Server, se puede realizar un rebuild en línea para reducir el impacto.
Comando:
sql
ALTER INDEX nombre_del_indice
ON nombre_de_la_tabla
REBUILD;
- Pros:
- Elimina completamente la fragmentación.
- Compacta las páginas de datos.
- Contras:
- Consume más recursos.
- Puede bloquear el acceso a los datos durante la operación.
2. Reorganize (Reorganizar Índices)
- Qué hace: El comando reorganize realiza una reorganización de los fragmentos de un índice existente. Es una operación menos agresiva que el rebuild, ya que solo reorganiza los datos dentro de las páginas existentes en lugar de recrear el índice desde cero. Reorganize también compacta los niveles del índice.
- Cuándo usarlo: Se recomienda hacer un reorganize cuando la fragmentación es entre el 5% y 30%.
- Efecto en el sistema: Es una operación menos intensiva y se puede realizar sin bloquear el índice, permitiendo que las consultas sigan ejecutándose.
Comando:
ALTER INDEX nombre_del_indice
ON nombre_de_la_tabla
REORGANIZE;
- Pros:
- Consume menos recursos y no bloquea el índice.
- Se puede realizar mientras los usuarios acceden a los datos.
- Contras:
- No elimina completamente la fragmentación, solo la reduce.
Cuándo usar Rebuild vs Reorganize
- Menos del 5% de fragmentación: No se necesita mantenimiento.
- Entre 5% y 30% de fragmentación: Es recomendable hacer un reorganize.
- Más del 30% de fragmentación: Se recomienda hacer un rebuild.
Ver fragmentación de los índices
Antes de decidir si hacer un rebuild o reorganize, es útil medir el nivel de fragmentación con la siguiente consulta:
SELECT
dbschemas.[name] AS 'Schema',
dbtables.[name] AS 'Table',
dbindexes.[name] AS 'Index',
indexstats.avg_fragmentation_in_percent
FROM
sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) AS indexstats
INNER JOIN sys.tables dbtables ON dbtables.[object_id] = indexstats.[object_id]
INNER JOIN sys.schemas dbschemas ON dbtables.[schema_id] = dbschemas.[schema_id]
INNER JOIN sys.indexes AS dbindexes ON dbindexes.[object_id] = indexstats.[object_id]
AND indexstats.index_id = dbindexes.index_id
WHERE
indexstats.database_id = DB_ID()
AND dbindexes.[name] IS NOT NULL
ORDER BY
avg_fragmentation_in_percent DESC;
Resumen:
- Rebuild: Ideal para fragmentación >30%, más intensivo, elimina completamente la fragmentación.
- Reorganize: Para fragmentación entre 5%-30%, menos intensivo, no elimina toda la fragmentación, pero es más rápido y amigable para el sistema.
Guía Completa para Implementar FULLTEXT en SQL
EXEC sp_change_users_login SQL SERVER
Para que una tabla tenga FULLTEXT SQL
Procedimientos Almacenados Temporales en SQL Server