Rumah  >  Artikel  >  pangkalan data  >  MySQL PARTITION OLEH klausa anak

MySQL PARTITION OLEH klausa anak

WBOY
WBOYke hadapan
2023-08-29 21:25:021633semak imbas

MySQL PARTITION BY 子句

Partition By clause boleh digunakan untuk meningkatkan prestasi pertanyaan. Ia mengurangkan keperluan storan dan meningkatkan kebolehurusan data. Dengan membahagikan jadual besar, pertanyaan yang mengakses hanya sebahagian kecil data boleh dilaksanakan dengan lebih pantas. Pembahagian juga mengurangkan masa sandaran dan pemulihan. Dalam artikel ini, kita akan membincangkan Klausa Partition By dalam MySQL dengan sintaks dan pelbagai contoh.

Pengenalan

Tujuan klausa PARTITION BY adalah untuk mengumpulkan baris jadual ke dalam partition yang berasingan. Ini amat berguna apabila melakukan pengiraan pada baris tertentu dalam partition menggunakan baris lain dalam partition yang sama.

PARTITION BY clause mesti sentiasa digunakan dalam klausa OVER(). Partition yang dicipta oleh klausa PARTITION BY juga dipanggil tingkap. Klausa ini beroperasi secara khusus pada fungsi tetingkap seperti RANK(), LEAD(), dan LAG().

Jika anda mengecualikan klausa PARTITION BY daripada klausa OVER(), keseluruhan jadual akan dianggap sebagai partition tunggal.

Tatabahasa

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

klausa_tertib dan klausa_rangka ialah komponen pilihan tatabahasa.

Dalam MySQL, ungkapan dalam klausa Partition boleh menjadi nama lajur atau fungsi terbina dalam. Walau bagaimanapun, dalam SQL standard, hanya nama lajur dibenarkan dalam ungkapan.

Contoh

Mari kita ambil jadual "Penggodam" sebagai contoh -

h_id

h_name

cabaran_id

Skor

3

Raju

111

20

2

Mishlesh

111

80

5

Rudra

112

40

5

Mohan

114

90

4

Rohan

112

30

1

Sohan

112

40

Kita perlu menentukan kedudukan setiap penggodam dalam setiap cabaran. Dalam erti kata lain, kita perlu menyenaraikan semua penggodam yang menyertai cabaran dan kedudukan masing-masing dalam cabaran itu.

Untuk mencapai ini, kami menggunakan pertanyaan berikut:

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

Dalam pertanyaan ini, partition by clause mengumpulkan jadual mengikut challenge_id.

Tertib mengikut klausa mengisih penggodam dalam setiap partition dalam susunan skor menurun.

Klausa

over() menentukan cara membahagi dan mengisih baris jadual untuk kedudukan fungsi tetingkap().

Fungsi tetingkap dense_rank() memberikan pangkat kepada setiap penggodam dalam partition tersusun cabaran. Jika dua penggodam mempunyai skor yang sama, mereka diberikan kedudukan yang sama.

Hasil keluaran menunjukkan senarai semua penggodam dan kedudukan masing-masing untuk setiap cabaran -

cabaran_id

h_id

h_name

Skor

Kedudukan

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

Jadi kami berjaya mendapatkan senarai semua penggodam dan kedudukan mereka dalam setiap cabaran individu.

Penggunaan klausa PARTITION BY

  • Kumpulkan baris jadual ke dalam partition berasingan untuk melakukan pengiraan pada baris tertentu dalam partition.

  • Kurangkan keperluan storan dan tingkatkan kebolehurusan data.

  • Tingkatkan prestasi pertanyaan dengan melaksanakan pertanyaan yang mengakses hanya sebahagian kecil data anda dengan lebih pantas.

  • Kurangkan masa sandaran dan pemulihan.

Kesimpulan

Klausa PARTITION BY dalam MySQL ialah alat yang berguna untuk mengumpulkan baris jadual ke dalam partition berasingan, dengan itu meningkatkan prestasi pertanyaan dan mengurangkan keperluan storan. Klausa ini beroperasi secara khusus pada fungsi tetingkap seperti RANK(), LEAD(), dan LAG(). Sintaksnya mudah dan membenarkan fleksibiliti dalam jenis ungkapan yang digunakan dalam klausa. Contoh di atas menunjukkan kefungsian klausa PARTITION BY apabila mengira jumlah jualan untuk setiap pelanggan. Dengan memanfaatkan ciri berkuasa ini, pengguna boleh mengoptimumkan prestasi pangkalan data dan meningkatkan kebolehurusan data.

Atas ialah kandungan terperinci MySQL PARTITION OLEH klausa anak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam