2017-04-11 1 views

Répondre

4

CockroachDB n'offre pas encore un moyen efficace de le faire! Pour une manière non-efficace, vous pouvez utiliser SELECT ... FROM ... ORDER BY random() LIMIT 1;

Alternativement, vous pouvez manipuler les résultats d'une instruction SELECT dans votre application elle-même. Après avoir placé les résultats dans un tableau (ou toute autre structure de type agrégat), vous pouvez également mélanger l'ordre là-bas.

0

Pour une manière plus efficace, vous pouvez ajouter une colonne entière randomid à chaque ligne. Lors de l'insertion mettre un nombre aléatoire dans cette colonne. Ensuite, vous pouvez récupérer une colonne aléatoire:

SELECT ... FROM ... WHERE randomid >= ? ORDER BY randomid LIMIT 1;

où? est un nombre aléatoire.

Notez que vous aurez besoin de stockage supplémentaire pour le nombre aléatoire et que vous devez indexer la colonne randomid.

Notez également que vous devrez peut-être exécuter cette requête deux fois (> = et <) pour vous assurer d'obtenir un résultat. Bien que la probabilité de suppression sur la première requête devrait être très faible.