iwiw szerű eventek - teljesítmény - elméleti kérdés

Sziasztok!

Egy iwiw eseményekhez hasonló dolgot szeretnék irni egy Rails alkalmazáshoz. Hogyan lenne ez nagyon gyors? Az ötleteim:

* events táblába user_id, ami szintén egy index, egy felhasználónak egy eseménye csak egyszer tárolódna, itt viszont a lekérdezés lenne lassabb (az összes ismerősön végig kellene menni).

* egy esemény, egy user és egy events_users tábla, itt szerintem a lekérdezés gyorsabb lenne, de a fórumnyitás lassú, mivel az összes ismerőst hozzá kell kapcsolni az event-hez.

* Az iwiw, facebook ezt vajon hogyan oldja meg?

Hozzászólások

táblaösszekapcsolásról ugye már hallottál? :)
events tábla user_id alapján indexelve, ehhez hozzá tudod kapcsolni az ismerős táblát. Limitelj, és gyors lesz.

Amúgy hosszútávon meg jobban jársz, ha két events táblát csinálsz, az egyikben az aktuális infók vannak, a másikban a régiek. (a régi tábla tetszőlegesen nagyra megnőhet, és ezt már nem fogod az összes ismerőssel összekapcsolni, csak egy-egy userre szűrni)

Igen, az egyik megoldásom is ez lett volna. A gond ezzel az, hogy ha egy usernek van mondjuk 100 ismerőse, akkor minden egyes ismerősön végig kell menni és lekérdezni, hogy az event táblában van-e új rekord hozzá kapcsolva. Régi tábla azért nem lesz, mert törölni fogom az 1 hétnél régebbi rekordokat.

Vagy valamit rosszul értelmezek?

--
http://sandor.czettner.hu

Join is jo megoldas lehet, de ize.


mysql> explain select id, user_id from lofasz where user_id IN (1,3,5,32,342) \G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: lofasz
         type: range
possible_keys: user_id
          key: user_id
      key_len: 4
          ref: NULL
         rows: 5
        Extra: Using where
CREATE TABLE `lofasz` (
  `id` int(10) NOT NULL auto_increment,
  `user_id` int(10) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `user_id` (`user_id`)
) ENGINE=MyISAM AUTO_INCREMENT=500 DEFAULT CHARSET=utf8 

Mondjuk ja, elismerem, hogy egy right join szebb :)