sql >> Database >  >> RDS >> Mysql

Omgaan met ongelezen berichten in PHP / MySQL

Een tabel met alle user_ids en post_ids is een slecht idee, omdat het exponentieel groeit. Stel je voor dat je forumoplossing zou groeien tot een miljoen berichten en 50.000 gebruikers. Nu heb je 50 miljard records. Dat zal een probleem zijn.

De truc is om een ​​tabel te gebruiken zoals je zei, maar deze bevat alleen berichten die zijn gelezen sinds deze login, van berichten die zijn gepost tussen de laatste login en deze login.

Alle berichten die vóór de laatste aanmelding zijn geplaatst, worden als gelezen beschouwd.

IE, ik heb voor het laatst ingelogd op 3-4-2011, en dan log ik vandaag in. Alle berichten die vóór 3-4-2011 zijn geplaatst, worden als gelezen beschouwd (ze zijn niet nieuw voor mij). Alle berichten tussen 4/3/2011 en nu zijn ongelezen, tenzij ze worden gezien in de leestabel. Elke keer dat ik inlog, wordt de leestabel leeggemaakt.

Op deze manier zou uw tabel met gelezen berichten nooit meer dan een paar honderd records voor elk lid moeten hebben.



  1. Toegang geweigerd voor gebruiker 'gebruikersnaam'@'localhost' (met wachtwoord:YES) in C:\webdev\wamp\www\membershipSite\classes\Mysql.php op regel 9

  2. Invoegen in één tabelbasis op samenvoegresultaat van 2 andere tabellen

  3. ORDER DOOR een gelijke waarde in MySQL

  4. MySQL LIMIT-clausule equivalent voor SQL SERVER