2015-04-05 2 views

Répondre

5

En supposant une distribution complètement uniforme sur cette colonne, chaque valeur de colonne serait mappée à 750 000 lignes. Maintenant, alors que le doc DataStax sur When To Use An Index souligne que ...

index intégré sont les meilleurs sur une table ayant plusieurs lignes contenant la valeur indexée.

750 000 lignes sont certainement qualifiées de "nombreuses". Mais même compte tenu de cela, rappelez-vous que vous parlez aussi de 14 250 000 lignes que Cassandra a à ignorer lors de l'accomplissement de votre requête. De plus, sauf si vous avez une RF de 10 (et je doute que vous le feriez avec 10 nœuds), vous allez passer du temps sur le réseau car Cassandra fonctionne entre tous les différents nœuds requis pour répondre à votre requête. Pour 750 000 lignes, cela va probablement expirer. La seule façon dont je pense que cela pourrait être efficace, serait d'abord restreindre votre requête par une clé de partition. L'utilisation de l'index secondaire tout en limitant avec une clé de partition aidera Cassandra à trouver vos lignes plus rapidement. Même ainsi, avec un ensemble de données aussi grand, je réévaluerais votre modèle de données et essayerais de trouver une table différente pour remplir cette requête sans avoir besoin d'un index secondaire.

+0

hi Bryce; merci beaucoup pour l'explication. Pour ajouter à la question ci-dessus, nous appliquerions une limite '1' à la requête. ce serait "select * from table where secondary_index = 'xyz' limit 1". Est-ce que la fonction de limite provoquerait un timeout RPC aussi? – kris433

+0

@ kris433 avec une limite de 1, il pourrait ne pas être trop mauvais. Essayez-le et voyez ce que sont vos temps de réponse. – Aaron