sql >> Databasteknik >  >> RDS >> Sqlserver

Normalisera ett extremt stort bord

Du kommer att hitta andra fördelar med att normalisera data förutom hastigheten på frågor som körs mot den... såsom storlek och underhållbarhet, vilket i sig borde motivera normalisering av det...

Men det kommer sannolikt också att förbättra hastigheten på frågor; att för närvarande ha en enda rad med 300 textkolumner är enormt, och det är nästan säkert förbi 8 060 bytegräns för lagring av raddatasidan ... och lagras istället i ROW_OVERFLOW_DATA eller LOB_DATA Tilldelningsenheter.

Genom att minska storleken på varje rad genom normalisering, som att ersätta redundant textdata med en TINYINT främmande nyckel, och genom att även ta bort kolumner som inte är beroende av den här stora tabellens primärnyckel till en annan tabell, bör data inte längre svämma över, och du kommer också att kunna lagra fler rader per sida.

Så långt som omkostnader som lagts till genom att utföra JOIN för att få normaliserade data... om du korrekt indexerar dina tabeller, bör detta inte lägga till en betydande mängd omkostnader. Men om det lägger till en oacceptabel overhead kan du sedan selektivt avnormalisera data vid behov.



  1. MySQL Räkna distinkta värden från en kolumn

  2. Kombinera INSERT-satser i en datamodifierande CTE med ett CASE-uttryck

  3. Varför är det fortfarande möjligt att infoga en främmande nyckel som inte finns?

  4. Fjäderstyrd böninjektion i klass med implementering av RowMapper