sql >> Database >  >> RDS >> Mysql

Groot aantal kolommen in MySQL-database

Ok, ik zie je dialemma, en in de (vermoedelijk van korte duur) afwezigheid van een database-expert zal ik je mijn mening geven.

Verbreek voor de zekerheid uw gegevens. Stel dat u informatie over mensen opslaat. Je hebt geen 200 kolommen in 1 tabel nodig. Je moet ze opsplitsen en meerdere kolommen in veel tabellen hebben. bijv.

tblGeneralCharacteristics:
 - colEyeColor
 - colHairColor
 - colHeight
 - colWeight

tblInterests:
 - colFaveColor
 - colFaveSport

tblRelationships
 - colMother
 - colFather
 - colBrother
 - colSister

Deze manier is veel beter. Computationeel betwijfel ik of het veel uitmaakt. Het is duidelijk dat u met elke zoekopdracht minder gegevens terugkrijgt, dus voor sommige rapporten (waar u mogelijk niet alle gegevens hoeft te krijgen of door alle gegevens moet bladeren) kan het sneller zijn (hoewel als u de database correct indexeert, zou het geen probleem).

Op naar het volgende nummer. Dat van het aantal records in de database. Als 10.000 een beetje groot begint te worden, is het tijd om te gaan cachen.

Wat mij betreft is er geen goede of foute manier om gegevens in de cache op te slaan. Wat je nodig hebt, is wat je nodig hebt. Dus in uw vraag noemde u bijvoorbeeld het verkrijgen van gemiddelde hoogten voor gewicht voor invoer van records tussen januari en maart 2012. Wel... u zou een cron-script kunnen schrijven dat de gemiddelde hoogte voor gewicht berekent voor alle records die die maand zijn ingevoerd en dit opslaat ergens in een andere tabel. Als u dan uw rapport gaat maken, hoeft u alleen maar de waarden voor januari, februari en maart op te halen en ze gemiddeld te maken... dat is veel gemakkelijker. In plaats van een computationele query uit te voeren op mogelijk duizenden rijen, voert u een cron-query uit (het maakt niet uit hoe lang het duurt) op een paar honderd rijen, en dan vraagt ​​het eigenlijke rapport slechts drie rijen.

Een andere truc is, hoe meer berekeningen u in SQL kunt doen, hoe beter. Als u het gemiddelde van velden/records wilt, of iets wilt optellen, verzend het dan met uw SQL-query. De SQL-server zal de berekening uitvoeren en het resultaat retourneren, in plaats van u enorme hoeveelheden gegevens terug te sturen om door te bladeren. Ik weet dat dit niet altijd gemakkelijk/nuttig is, maar hoe meer je SQL kunt laten doen, hoe beter.

Ik hoop dat dit helpt. Zoals ik al zei, ik weet zeker dat een database-expert je graag wat meer inzichtgevend advies wil geven. :)



  1. Hoe kan ik een groot (14 GB) MySQL-dumpbestand in een nieuwe MySQL-database importeren?

  2. Hoe gegevens uit een andere tabel te kopiëren zonder de tabel in MYSQL 6.2 te vergrendelen?

  3. Het databasewachtwoord wijzigen

  4. 4 manieren om de database-sortering in MariaDB te krijgen