sql >> Database teknologi >  >> RDS >> Sqlserver

Opdeling efter år vs. separate tabeller med navnet Data_2011, Data_2010 osv.

Fra et internt perspektiv er metoderne i det væsentlige de samme.

Bag kulisserne, når du opretter en dato-baseret partition, opretter SQL-motoren separate fysiske tabeller for hver partition og laver derefter, hvad der grundlæggende er en UNION når du forespørger i selve tabellen.

Hvis du bruger et filter i din forespørgsel på den partitionerede tabel, der svarer til dit partitioneringsfelt (DateField lad os sige), så kan motoren gå direkte til den partition, du har brug for til dataene. Hvis ikke, søger den efter hver fysisk tabel i den logiske tabel efter behov for at fuldføre forespørgslen.

Hvis dine forespørgsler vil involvere et datofilter (hvilket det lyder som om de vil ud fra dit spørgsmål), så kan jeg ikke komme i tanke om nogen fordel ved din "brugerdefinerede" metode.

Grundlæggende er det valg, du skal træffe, vil du være ansvarlig for alle logikken og hjørnesager, der er involveret i partitionering, eller stole på, at udviklerne hos Microsoft, som har gjort dette i årtier, gør det for dig?

Til mit eget formål, hvis der er en indbygget ramme for noget, jeg vil gøre, så prøver jeg altid at bruge det. Det er uvægerligt hurtigere, mere stabilt og mindre udsat for fejl end en "rull-din-egen"-løsning.



  1. Sådan profileres ende til ende ydeevne af Oracles lagrede procedure

  2. hvordan man beregner unikke kolonneværdier i mysql

  3. PHP Prepared Statements... Bind variabel som numerisk område i REGEXP?

  4. Hvordan kan jeg udtrække dele af et Django Postgres DateRangeField