sql >> Database >  >> RDS >> Mysql

MySQL JOIN-prestaties op 1 grote tafel en meerdere kleine tafels

Omdat het een "een-op-veel"-relatie is, zou ik ze in een aparte tabel opslaan. De query-optimizer van de SQL-server (onder de motorkap) zal de 250 records snel genoeg kunnen ontleden, zodat het geen probleem zou moeten zijn. Bovendien bespaart u, afhankelijk van de lengte van de waarden in de kleinere tabel, opslagruimte door ze niet honderden miljoenen keren extra op te slaan. Als rapportageprestaties echter van het grootste belang zijn, kunt u ervoor kiezen om ze op te slaan in één "afgeplatte" tabel - zoals een datawarehouse-structuur, zonder de joins. Dat zal zeker sneller zijn, maar je zou opslagruimte en je mooi gestructureerde relationele database opofferen.

Dat gezegd hebbende, zou ik voor optie 1 gaan. Maar je zou de gegevens gemakkelijk in een nieuwe tabel moeten kunnen opslaan met de indeling van optie 2 - een query uitvoeren op beide - en vervolgens de prestaties voor jezelf kunnen meten. Ik verwacht dat het niet veel zal uitmaken, vooral gezien de capaciteit van je kleinere tafels.



  1. Wijzig het scheidingsteken in een komma in SQLite-queryresultaten

  2. IS NOT NULL-test voor een record retourneert niet TRUE wanneer variabele is ingesteld

  3. Tabel wordt twee keer gespecificeerd, zowel als doel voor 'UPDATE' en als aparte bron voor gegevens in mysql

  4. Een onbekend relationeel diagramsymbool gevonden in Oracle SQL Developer