2010-02-05 15 views
1

Je prévois de créer une table mysql 5 (myISAM) qui contiendra x mille lignes de données. Chaque ligne aura un champ de compte, & les lignes avec les 20 valeurs de comptage les plus élevées seront récupérées beaucoup, probablement sur un ratio de un pour un à chaque mise à jour de ligne. Les x milliers de lignes ne figurant pas dans cette liste ne seront généralement pas récupérées.Conception db efficace pour récupérer les lignes de table les plus populaires

Quels sont les choix à faire en choisissant une méthode efficace d'interrogation pour les 20 premières valeurs de comptage. Les données n'ont pas ont pour être en temps réel en direct mais ça aide!

Répondre

0

Créez un index sur le champ de compte. Terminé.

+0

le doigt le plus rapide d'abord. Au cas où vous vous le demanderiez, j'avais pensé à la solution d'interrogation, peut-être même en copiant les 20 lignes les plus occupées sur une table séparée et en mettant leurs mises à jour, peut-être en réindexant le 20 ou quoi que ce soit ... la bonne solution dans ces scénarios? – rutherford

+0

Pour une table avec seulement des milliers de lignes, un index sera très bien. lorsque vous arrivez à des millions de lignes, réduire la taille de l'ensemble de données peut valoir l'effort supplémentaire. –

-2

Toutes les cinq minutes, vider et copier le top 20 dans un tableau séparé. Pour obtenir le top 20, il suffit de consulter cette table. Terminé!

(. Ou bien, vous pouvez passer les prochaines heures à peaufiner votre requête et les paramètres et les indices et faire tout « juste »)

+0

Pourquoi les downvotes? J'apprécierais au moins un commentaire quant à pourquoi vous n'aimez pas cette idée ... –

1

Ajouter un index sur le champ de comptage, puis juste une requête normale:

SELECT * FROM myTable ORDER BY countField DESC LIMIT 20;