Tengo algunas tablas muy grandes en mi base de datos, pero una parte sustancial de estos datos es "antigua".
Debido a circunstancias más allá de mi control, no estoy autorizado a eliminar estos datos "antiguos". La otra limitación es que no puedo modificar la base de datos, lo que significa agregarle grupos de archivos. Tal como están las cosas en este momento, todo reside en el PRIMARY
grupo de archivos.
Estaba pensando en dividir estas tablas en unas pocas particiones, como "nuevo", "antiguo", "archivado" y similares. Tengo una columna de "estado" que me gustaría utilizar para este propósito.
Dado el escenario y las limitaciones descritas, me preguntaba si la partición tiene algún sentido aquí. En otras palabras, si mi tabla está particionada de esta manera, pero todas las particiones se encuentran en el mismo grupo de archivos, SQL Server será lo suficientemente inteligente como para encontrar esa área especial en el archivo subyacente donde residen mis "nuevos" datos y no tocar el área con datos "antiguos"?
Para decirlo de otra manera, si, digamos, el 80% de mis datos son "viejos". ¿Tiene SQL Server un mecanismo para evitar acceder al 100% de los archivos subyacentes y acceder solo al 20% que contiene datos "nuevos" (suponiendo, por supuesto, que especifique mi columna de partición en la WHERE
cláusula de las consultas).
Supongo que para responder esto, uno necesitaría entender cómo se implementa internamente la partición. Agradezco cualquier puntero.
fuente
La respuesta es sí". Tiene un mecanismo en cualquier consulta que filtra las entradas en función de la lógica utilizada para definir las particiones.
Sin embargo, debe tener el filtro adecuado o se escaneará toda la partición. Esto normalmente implicaría tener filtros de fecha (en su caso) para elegir la partición.
Una forma de aplicar esto es tener vistas que accedan solo a una partición, con la lógica correcta en la vista.
fuente