MySQL extrahiert zufällig eine bestimmte Anzahl von Datensätzen

MySQL extrahiert zufällig eine bestimmte Anzahl von Datensätzen

Früher habe ich zur Handhabung dieser Art von Nutzungsszenario direkt nach rand() sortiert, aber die Effizienz war wirklich unbefriedigend. Daher bin ich kürzlich wieder auf dieses Szenario gestoßen und habe online nach einer besseren Lösung gesucht.

1.Reihenfolge nach rand()

Schreibmethode:

WÄHLEN
  Ausweis
AUS
  `Tabelle`
BESTELLEN BIS
  rand()

Der Nachteil dieser Schreibmethode besteht darin, dass die Rand-Funktion in der Reihenfolge mehrfach ausgeführt wird, was die Effizienz beeinträchtigt.

2. max(id) * rand() mit join

Schreibmethode:

WÄHLEN
  *
AUS
  `Tabelle` AS t1
VERBINDEN (
  WÄHLEN
    RUNDEN(
      RAND() * (
        (Wählen Sie MAX(id) aus „Tabelle“) – (Wählen Sie MIN(id) aus „Tabelle“)
      ) + (SELECT MIN(id) FROM `table`)
    ) AS-ID
) AS t2
WO
  t1.id >= t2.id
BESTELLEN BIS
  t1.id
GRENZE 1;

Die Großen im Internet empfehlen alle die zweite Schreibweise, deshalb möchte ich sie aufschreiben. Ich denke, dass die maximale und die minimale ID im Programm berechnet werden können.

Das Problem hierbei ist, dass mehrere Datensätze fortlaufend sein müssen. Wenn Sie also keine fortlaufenden Daten verwenden möchten, müssen Sie eine Schleife verwenden. Diese Anweisung ist jedoch äußerst effizient, sodass eine Schleifenabfrage durchgeführt werden kann.

Dies sind alle relevanten Wissenspunkte. Freunde in Not können davon lernen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

<<:  Element-Beispielcode zum Implementieren dynamischer Tabellen

>>:  So installieren Sie Babel mit NPM in VSCode

Artikel empfehlen

Beispielerklärung der Alarmfunktion in Linux

Einführung in die Linux-Alarmfunktion Oben genann...

Ausführliche Erklärung der Set- und WeakSet-Sammlungen in ES6

Inhaltsverzeichnis Ein Set ist eine spezielle Sam...

Detaillierte Erklärung zur Verwendung von MySQL DML-Anweisungen

Vorwort: Im vorherigen Artikel haben wir hauptsäc...

Detaillierte Erklärung zur Verwendung der Vue-Verifizierungscode-Komponente

In diesem Artikelbeispiel wird der spezifische Im...

Verwendung des MySQL-Stresstesttools Mysqlslap

1. MySQLs eigenes Stresstest-Tool Mysqlslap mysql...

So bereinigen Sie Daten in einer MySQL-Onlinedatenbank

Inhaltsverzeichnis 01 Szenarioanalyse 02 Funktion...

Verwendung von Vue-Filtern und benutzerdefinierten Anweisungen

Inhaltsverzeichnis Filter 01.Was ist 02. Wie es g...

Beispiel für die Bereitstellung einer Laravel-Anwendung mit Docker

Das in diesem Artikel verwendete PHP-Basisimage i...

Zabbix implementiert die Überwachung mehrerer MySQL-Prozesse

Auf einem Server werden drei MySQL-Instanzprozess...

Ubuntu 20.04: Beispiel zum Ändern der IP-Adresse

veranschaulichen: Als ich heute das letzte Experi...

el-table in vue realisiert automatischen Deckeneffekt (unterstützt feste)

Inhaltsverzeichnis Vorwort Umsetzungsideen Wirkun...

mysql 5.7.11 winx64 anfängliche Passwortänderung

Laden Sie die komprimierte Version von MySQL-5.7....

MySQL-Kodierung utf8 und utf8mb4 utf8mb4_unicode_ci und utf8mb4_general_ci

Referenz: MySQL-Zeichensatzübersicht utf8mb4 wurd...

Spezifische Verwendung von MySQL-Globalsperren und Sperren auf Tabellenebene

Inhaltsverzeichnis Vorwort Globale Sperre Tabelle...