Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment les algorithmes de classement Reddit et Hacker News sont-ils utilisés ?

J'ai implémenté une version SQL de l'algorithme de classement de Reddit pour un agrégateur vidéo comme celui-ci :

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 est mis à jour par un déclencheur chaque fois qu'un nouveau vote est émis. Il fonctionne assez rapidement sur notre site actuel, mais je prévois d'ajouter une colonne de valeur de classement et de la mettre à jour avec le même déclencheur que le cached_votes_total colonne. Après cette optimisation, il devrait être assez rapide pour la plupart des sites de toutes tailles.

edit :Plus d'informations sur Algorithme Reddit Hotness en SQL