sql >> Databasteknik >  >> RDS >> Mysql

Hur används Reddit och Hacker News rankningsalgoritmer?

Jag implementerade en SQL-version av Reddits rankningsalgoritm för en videoaggregator så här:

SELECT id, title
FROM videos
ORDER BY 
    LOG10(ABS(cached_votes_total) + 1) * SIGN(cached_votes_total)   
    + (UNIX_TIMESTAMP(created_at) / 300000) DESC
LIMIT 50

cached_votes_total uppdateras av en utlösare när en ny röst görs. Den körs tillräckligt snabbt på vår nuvarande webbplats, men jag planerar att lägga till en kolumn för rankingvärde och uppdatera den med samma trigger som cached_votes_total kolumn. Efter den optimeringen bör den vara tillräckligt snabb för de flesta webbplatser av alla storlekar.

edit:Mer information på Reddit Hotness Algorithm in SQL



  1. java jdbc mysql-kontakt:hur man löser frånkoppling efter en lång inaktivitetstid

  2. PostgreSQL-fönsterfunktion:partition i jämförelse

  3. Sortera träd med en materialiserad stig?

  4. MySQL-datatyp INT(11) medan UNSIGNED INT(10)?