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

Normalisering af et ekstremt stort bord

Du vil finde andre fordele ved at normalisere dataene udover hastigheden af ​​forespørgsler, der kører imod dem... såsom størrelse og vedligeholdelse, hvilket alene burde retfærdiggøre normalisering af det...

Det vil dog sandsynligvis også forbedre hastigheden af ​​forespørgsler; i øjeblikket at have en enkelt række med 300 tekstkolonner er massivt, og det er næsten sikkert forbi 8.060 byte-grænse for lagring af rækkedatasiden ... og bliver i stedet gemt i ROW_OVERFLOW_DATA eller LOB_DATA Tildelingsenheder.

Ved at reducere størrelsen af ​​hver række gennem normalisering, såsom at erstatte redundante tekstdata med en TINYINT fremmed nøgle, og ved også at fjerne kolonner, der ikke er afhængige af denne store tabels primære nøgle, til en anden tabel, bør dataene ikke længere flyde over, og du vil også være i stand til at gemme flere rækker pr. side.

For så vidt angår overhead tilføjet ved at udføre JOIN for at få de normaliserede data... hvis du korrekt indekserer dine tabeller, burde dette ikke tilføje en væsentlig mængde overhead. Men hvis det tilføjer en uacceptabel overhead, kan du derefter selektivt denormalisere dataene efter behov.



  1. VÆLG DISTINCT-værdier efter en JOIN

  2. Hvordan kan jeg med PDO sikre mig, at en UPDATE-erklæring var vellykket?

  3. oracle sql pivot forespørgselstabel

  4. flere MySQL-forespørgsler til en enkelt insert