Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[MySQL]Tabel opsplitsen of niet

Pagina: 1
Acties:

  • Tjolk
  • Registratie: Juni 2007
  • Nu online
Ik ben bezig met een redesign van een MySQL database. Onderdeel daarvan wordt een tabel met artikelen. Een aantal grote stukken daarvan heb ik al naar een aparte tabel geduwd (bijv omschrijvingen, foto's/videos, etc). In de "basis" tabel heb ik nu nog 6 varchar kolommen over en verder zijn het INT/MEDIUMINT/TINYINT en DATETIME kolommen. Toch zijn het nog 26 kolommen welke ik niet continu nodig heb in alle processen.

Ik zit me dus af te vragen of het zinvol is om de tabel nog verder op te splitsen, maar dat betekent ook wel dat ik in 9 van de 10 processen weer een extra join ga hebben om de relevante informatie voor dat proces op te vragen of weg te schrijven.

Is er ergens iets geschreven over waar het optimum ligt v.w.b. opsplitsen cq. bij elkaar houden van tabellen?

Tjolk is lekker. overal en altijd.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20-11 22:59

Janoz

Moderator Devschuur®

!litemod

1 op 1 relaties gewoon in dezelfde tabel houden. (De ontwikkelaars van) Mysql is/zijn een stuk slimmer dan jij en hebben MySQL waarschijnlijk al behoorlijk slim gemaakt zodat hij zelf kan bepalen of er een bepaalde partitionering nodig is. Neem bijvoorbeeld een TEXT of een BLOB veld. Deze kun je gewoon in je tabel opnemen, maar onder water worden deze alsnog appart opgeslagen.

Hou je database model gewoon netjes en laat het daadwerkelijk je data beschrijven. Pas als je daadwerkelijk performance problemen ondervindt kun je gaan zoeken waar het weg komt en eventueel denormaliseren.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • FoXgun
  • Registratie: September 2009
  • Laatst online: 11-11 23:11
Ben het met Janoz eens. Als je niet altijd alle kolommen nodig hebt, dan is het verstandig om het jezelf aan te leren om geen queries met de select * te maken.
SQL:
1
SELECT *

Maak queries waar je alleen de gewenste kolommen opvraagt zoals:
SQL:
1
SELECT col1, col3, col99
.

[ Voor 7% gewijzigd door FoXgun op 13-06-2014 12:30 ]


  • Tjolk
  • Registratie: Juni 2007
  • Nu online
Ok. Ik verwachtte problemen te krijgen met de filesize aangezien meer kolommen in 1 tabel zou resulteren in een groter bestand en daardoor mindere performance. Dat is, zo begrijp ik, dus geen issue.

In dat geval hou ik het gewoon zoals het is.

@FoXgun: over het algemeen (in de definieve code) hou ik inderdaad de specifieke kolommen aan om te selecteren.

Tjolk is lekker. overal en altijd.