Heim  >  Artikel  >  Datenbank  >  MySQL PARTITION BY untergeordnete Klausel

MySQL PARTITION BY untergeordnete Klausel

WBOY
WBOYnach vorne
2023-08-29 21:25:021633Durchsuche

MySQL PARTITION BY 子句

Die Partition By-Klausel kann verwendet werden, um die Abfrageleistung zu verbessern. Es reduziert den Speicherbedarf und verbessert die Datenverwaltung. Durch die Partitionierung einer großen Tabelle können Abfragen, die nur auf einen kleinen Teil der Daten zugreifen, schneller ausgeführt werden. Durch die Partitionierung werden auch die Sicherungs- und Wiederherstellungszeiten verkürzt. In diesem Artikel besprechen wir die Partition By-Klausel in MySQL mit Syntax und verschiedenen Beispielen.

Einführung

Der Zweck der PARTITION BY-Klausel besteht darin, die Zeilen einer Tabelle in separate Partitionen zu gruppieren. Dies ist besonders nützlich, wenn Sie Berechnungen für bestimmte Zeilen innerhalb einer Partition durchführen und dabei andere Zeilen in derselben Partition verwenden.

PARTITION BY-Klausel muss immer innerhalb einer OVER()-Klausel verwendet werden. Mit der PARTITION BY-Klausel erstellte Partitionen werden auch als Fenster bezeichnet. Diese Klausel arbeitet speziell mit Fensterfunktionen wie RANK(), LEAD() und LAG().

Wenn Sie die PARTITION BY-Klausel aus der OVER()-Klausel ausschließen, wird die gesamte Tabelle als eine einzelne Partition behandelt.

Grammatik

Window_function ( expression )
   Over ( partition by expr [order_clause] [frame_clause] )

order_clause und frame_clause sind optionale Bestandteile der Grammatik.

In MySQL kann der Ausdruck in der Partitionsklausel ein Spaltenname oder eine integrierte Funktion sein. In Standard-SQL sind in Ausdrücken jedoch nur Spaltennamen zulässig.

Beispiel

Nehmen wir als Beispiel die Tabelle „Hacker“ -

h_id

h_name

challenge_id

Ergebnis

3

Raju

111

20

2

Mishlesh

111

80

5

Rudra

112

40

5

Mohan

114

90

4

Rohan

112

30

1

Sohan

112

40

Wir müssen die Rangfolge jedes Hackers in jeder Herausforderung ermitteln. Mit anderen Worten, wir müssen alle Hacker auflisten, die an der Challenge teilgenommen haben, und ihre jeweiligen Platzierungen bei dieser Challenge.

Um dies zu erreichen, verwenden wir die folgende Abfrage:

select challenge_id, h_id, h_name, score,
dense_rank() over ( partition by challenge_id order by score desc )
as "rank", from hacker;

In dieser Abfrage gruppiert die Partition by-Klausel die Tabelle nach Challenge_ID.

Die Order-By-Klausel sortiert die Hacker in jeder Partition in absteigender Reihenfolge ihrer Punktzahl.

Die

over()-Klausel gibt an, wie Tabellenzeilen für die Fensterfunktion rank() partitioniert und sortiert werden.

Die Fensterfunktion „dense_rank()“ weist jedem Hacker in der geordneten Partition der Herausforderung einen Rang zu. Wenn zwei Hacker die gleiche Punktzahl haben, wird ihnen der gleiche Rang zugewiesen.

Die Ergebnisausgabe zeigt eine Liste aller Hacker und ihre jeweiligen Rankings für jede Herausforderung -

challenge_id

h_id

h_name

Ergebnis

Ranking

111

2

Mishlesh

80

1

111

3

Raju

20

2

112

Rudra

40

1

112

1

Sohan

40

1

112

4

Rohan

30

2

114

5

Mohan

90

1

So ist es uns gelungen, eine Liste aller Hacker und deren Rangfolge in jeder einzelnen Herausforderung zu erhalten.

Verwendung der PARTITION BY-Klausel

  • Gruppieren Sie die Zeilen einer Tabelle in separate Partitionen, um Berechnungen für bestimmte Zeilen innerhalb der Partitionen durchzuführen.

  • Reduzieren Sie den Speicherbedarf und verbessern Sie die Datenverwaltung.

  • Verbessern Sie die Abfrageleistung, indem Sie Abfragen, die nur auf einen kleinen Teil Ihrer Daten zugreifen, schneller ausführen.

  • Reduzieren Sie die Sicherungs- und Wiederherstellungszeit.

Fazit

Die PARTITION BY-Klausel in MySQL ist ein nützliches Tool zum Gruppieren von Zeilen einer Tabelle in separate Partitionen, wodurch die Abfrageleistung verbessert und der Speicherbedarf reduziert wird. Diese Klausel arbeitet speziell mit Fensterfunktionen wie RANK(), LEAD() und LAG(). Die Syntax ist einfach und ermöglicht Flexibilität bei den in Klauseln verwendeten Ausdruckstypen. Das obige Beispiel demonstriert die Funktionalität der PARTITION BY-Klausel bei der Berechnung des Gesamtumsatzes für jeden Kunden. Durch die Nutzung dieser leistungsstarken Funktion können Benutzer die Datenbankleistung optimieren und die Datenverwaltung verbessern.

Das obige ist der detaillierte Inhalt vonMySQL PARTITION BY untergeordnete Klausel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen