$offset = SELECT FLOOR(RAND() * COUNT(*)) FROM t_table
SELECT * FROM t_table WHERE LIMIT $offset,1
Cela fonctionne très bien dans myisam mais je voudrais changer cette table pour InnoDB (toutes les autres tables db sont InnoDB) pour profiter des avantages des clés-étrangers et éviter la table verrouillage de niveau.optimisation aléatoire de requête de ligne dans la table InnoDB
Le champ primaryId de ce tableau est un VARCHAR (10)
Je ne peux pas "forcer" un autoinc identifiant numérique, car les enregistrements sont supprimés/ajoutés tout le temps et RANDOM (MIN (Id), La prédiction MAX (Id)) manquerait probablement beaucoup de lignes.
comment puis-je optimiser cette requête à innodb?
Merci d'avance!
Arthur
C'était ma première tentative, mais la table est devenue plus grande et j'ai dû le remplacer par la question sur la question – arthurprs