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    

Artikel empfehlen

So setzen Sie das Root-Passwort in Linux mysql-5.6 zurück

1. Überprüfen Sie, ob der MySQL-Dienst gestartet ...

Vue implementiert die Lupenfunktion der Produktdetailseite

In diesem Artikel wird der spezifische Code von V...

Detaillierte Erklärung der Lösung für das zu langsame Docker-Compose

Es gibt nur eine Lösung: die Quelle ändern! Die Q...

Detaillierte Erklärung der Zählung ohne Filterbedingungen in MySQL

zählen(*) erreichen 1. MyISAM: Speichert die Gesa...

So installieren Sie Jupyter in Docker auf CentOS und öffnen Ports

Inhaltsverzeichnis Installieren Sie Jupyter Docke...

Verwenden von js, um den Effekt eines Karussells zu erzielen

Lassen Sie uns heute darüber sprechen, wie Sie mi...

Einführung in JavaScript-Array-Deduplizierungs- und -Flatteningfunktionen

Inhaltsverzeichnis 1. Array-Abflachung (auch als ...