sql >> Database >  >> RDS >> Mysql

snelle selectie van een willekeurige rij uit een grote tabel in mysql

Pak alle id's, kies er een willekeurig uit en haal de volledige rij op.

Als je weet dat de id's opeenvolgend zijn zonder gaten, kun je gewoon de max pakken en een willekeurige id berekenen.

Als er hier en daar gaten zijn, maar meestal opeenvolgende waarden, en je geeft niet om een ​​enigszins scheve willekeur, pak dan de maximale waarde, bereken een id en selecteer de eerste rij met een id die gelijk is aan of hoger is dan degene die je hebt berekend. De reden voor het scheeftrekken is dat id's die dergelijke gaten volgen, een grotere kans hebben om geplukt te worden dan degenen die een andere id volgen.

Als je willekeurig bestelt, krijg je een vreselijke tafelscan en het woord snel is niet van toepassing op een dergelijke oplossing.

Doe dat niet, en je moet ook niet bestellen via een GUID, het heeft hetzelfde probleem.



  1. MariaDB JSON_UNQUOTE() uitgelegd

  2. Verwijderen met Join in Oracle sql Query

  3. Hoe maak je een multi-tenant database met gedeelde tabelstructuren?

  4. Probeer deze praktische tips voor het monitoren van MySQL-databases