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

sélection rapide d'une ligne aléatoire à partir d'une grande table dans mysql

Saisissez tous les identifiants, choisissez-en un au hasard et récupérez la ligne complète.

Si vous savez que les identifiants sont séquentiels sans trous, vous pouvez simplement saisir le maximum et calculer un identifiant aléatoire.

S'il y a des trous ici et là mais surtout des valeurs séquentielles, et que vous ne vous souciez pas d'un caractère aléatoire légèrement biaisé, saisissez la valeur maximale, calculez un identifiant et sélectionnez la première ligne avec un identifiant égal ou supérieur à celui que vous avez calculé. La raison de cette distorsion est que les identifiants qui suivent de tels trous auront plus de chances d'être sélectionnés que ceux qui suivent un autre identifiant.

Si vous commandez au hasard, vous allez avoir un terrible scan de table entre les mains, et le mot rapide ne s'applique pas à une telle solution.

Ne faites pas cela, et vous ne devriez pas non plus commander par un GUID, cela a le même problème.