Új hozzászólás Aktív témák
-
cucka
addikt
Egy ilyen sql-el érdemes elindulni:
select events.* from events where users_id in (select friend_id from relations where users_id={$user_id}) order by dateofcreation ascAz in()-ben található lekérdezés kiszedi a $user_id-hez tartozó barátok azonosítóját (ide php-ban be kell helyettesíteni a $user_id változót. A külső lekérdezés meg egyszerűen listázza az events táblát, leszűrve a megfelelő felhasználói azonosítók szerint. Ha a barát adataira is szükség van, akkor bejoin-olod a users táblát is és kész.
A te php-s megoldásod annyi soron megy végig, amennyi a userek és a relációk számának szorzata, tehát az algoritmusod négyzetes.
Ebben az sql-es megoldásban a belső lekérdezés csak egyszer fut le és az index miatt logn időben végez, a külső lekérdezés pedig végigfut az összes soron, de egy index létrehozásával ezt szintén meg tudja oldani logn időben.
Gondolatkísérlet: tegyük fel, hogy nő az oldalad látogatottsága. Tegyük fel, hogy az eredetihez képest tízszer annyi felhasználó van, ami mondjuk húszszor annyi relációt jelent. Ez esetben:
- az én lekérdezésem nagyjából ugyanannyi idő alatt végez a kereséssel, mint előtte
- a te php-s megoldásod 200-szor ( ) annyi műveletet fog végezni, mint előtte[ Szerkesztve ]
Új hozzászólás Aktív témák
- APPLE Mac Studio M1 Max 10C CPU, 24C GPU, 32G RAM, 512GB SSD
- Kingston A400 960GB (SA400S37/960G)
- Ohh! HP EliteBook 840 G6 Fémházas Laptop 14" -70% i5-8365U 4Mag 16GB 512GB SSD FHD IPS + Táska!
- Szép! HP EliteBook 840 G6 Fémházas Laptop 14" -70% i5-8365U 4Mag 8GB 512GB SSD FHD IPS + Táska!
- Arctic Cooling Liquid Freezer II 280
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen