2017-05-05 1 views
0

J'ai une table dans RethinkDB composée de 3 millions de tweets. Chaque champ a une époque, quand il a été inséré. Quelle requête javascript puis-je faire pour obtenir rapidement les tweets des dernières 24 heures (environ 50k) triés par mot-clé? J'ai essayé quelque chose ci-dessous, mais c'est vraiment lent.Rethinkdb: Requête pour obtenir les articles des dernières 24 heures d'une grande table

`r.db('twitter').table('tweets') 
    .group('keyword') 
    .filter((row) => { 
    return row('epoch_time').gt(r.now().sub(86400)); 
    }) 
    .orderBy(r.desc('time')) 
    .pluck('url', 'text') ` 

Répondre

0

Un peu tard pour vous j'imagine, mais peut aider ceux qui trouvent cela dans leurs résultats de recherche.

    groupe
  • (« mot-clé ») retourne une réduction ne sera donc pas avoir un « epoch_time »
  • si vous savez que vous ne souhaitez que tweet de ces 24 dernières heures, puis mettre ce premier filtre. Il n'y a pas d'optimiseur de requête dans RethinkDB.
  • Si la performance est toujours un problème après cela, pensez à mettre un index sur 'epoch_time' et changez votre filtre (effectue une analyse de table) pour obtenirAll ...
  • si toujours un problème après cela, indexer par 'mot clé'
+0

Merci pour votre réponse. Je l'ai essayé sans la requête de groupe, mais c'est encore très lent. Pouvez-vous donner un exemple complet comment réécrire? – crisscross