sql >> Database >  >> RDS >> Sqlserver

Partitionering op jaar versus afzonderlijke tabellen met de naam Data_2011, Data_2010, enz.

Vanuit een intern perspectief zijn de methoden in wezen hetzelfde.

Achter de schermen, wanneer u een op datum gebaseerde partitie maakt, maakt de SQL-engine afzonderlijke fysieke tabellen voor elke partitie en doet vervolgens wat in feite een UNION is wanneer u de tabel zelf opvraagt.

Als u een filter gebruikt in uw query op de gepartitioneerde tabel die overeenkomt met uw partitioneringsveld (DateField laten we zeggen), dan kan de engine direct naar de partitie gaan die je nodig hebt voor de data. Zo niet, dan doorzoekt het elke fysieke tabel in de logische tabel om de zoekopdracht te voltooien.

Als uw vragen een datumfilter bevatten (wat lijkt op uw vraag), dan kan ik geen voordeel bedenken voor uw "aangepaste" methode.

In wezen is de keuze die u moet maken wilt u verantwoordelijk zijn voor alle logica en hoekzaken die betrokken zijn bij partitionering, of wilt u de ontwikkelaars bij Microsoft vertrouwen die dit al tientallen jaren doen om het voor u te doen?

Voor mijn eigen doeleinden, als er een ingebouwd raamwerk is voor iets dat ik wil doen, probeer ik het altijd te gebruiken. Het is altijd sneller, stabieler en minder foutgevoelig dan een "roll-your-own"-oplossing.



  1. Functie om een ​​dynamische set kolommen voor een bepaalde tabel te retourneren

  2. Replicatie-failover voor MySQL en MariaDB beheren

  3. mysql-groep door min . te hebben

  4. mysql zoeken naar segment van tabelnaam