Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Partitionnement par année par rapport à des tables séparées nommées Data_2011, Data_2010, etc.

D'un point de vue interne, les méthodes sont essentiellement les mêmes.

Dans les coulisses, lorsque vous créez une partition basée sur la date, le moteur SQL crée des tables physiques distinctes pour chaque partition, puis fait ce qui est essentiellement une UNION lorsque vous interrogez la table elle-même.

Si vous utilisez un filtre dans votre requête sur la table partitionnée qui correspond à votre champ de partitionnement (DateField disons), alors le moteur peut accéder directement à la partition dont vous avez besoin pour les données. Si ce n'est pas le cas, il recherche chaque table physique dans la table logique selon les besoins pour compléter la requête.

Si vos requêtes impliquent un filtre de date (ce qui semble être le cas d'après votre question), je ne vois aucun avantage à votre méthode "personnalisée".

Essentiellement, le choix que vous devez faire est voulez-vous être responsable de toute la logique et des cas particuliers impliqués dans le partitionnement, ou faites-vous confiance aux développeurs de Microsoft qui font cela depuis des décennies pour le faire pour vous ?

Pour mes propres besoins, s'il existe un cadre intégré pour quelque chose que je veux faire, j'essaie toujours de l'utiliser. Elle est invariablement plus rapide, plus stable et moins sujette aux erreurs qu'une solution « à votre propre compte ».