Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Rekod Pertama dan Terakhir Data Terkumpul dengan Cekap dalam MySQL?
Mengambil semula Rekod Pertama dan Terakhir Data Terkumpul dengan Fungsi Agregat dalam MySQL
Dalam MySQL, apabila mengambil data daripada rekod terkumpul menggunakan fungsi agregat, ia boleh menjadi mencabar untuk mendapatkan semula rekod pertama dan terakhir kumpulan itu. Walaupun berbilang pertanyaan boleh menyelesaikannya, ia boleh menjadi tidak cekap untuk jadual besar.
Untuk mengoptimumkan proses ini, MySQL menawarkan penyelesaian yang lebih cekap menggunakan fungsi GROUP_CONCAT dan SUBSTRING_INDEX .
Menggunakan GROUP_CONCAT dan SUBSTRING_INDEX
Dengan menggunakan fungsi ini bersama-sama, anda boleh menggabungkan nilai daripada kumpulan dan kemudian mengekstrak nilai pertama dan terakhir menggunakan SUBSTRING_INDEX. Begini caranya:
SUBSTRING_INDEX(GROUP_CONCAT(CAST(open AS CHAR) ORDER BY datetime), ',', 1) AS open SUBSTRING_INDEX(GROUP_CONCAT(CAST(close AS CHAR) ORDER BY datetime DESC), ',', 1) AS close
Cara Ia Berfungsi:
Contoh:
Pertimbangkan pertanyaan berikut:
SELECT MIN(low_price), MAX(high_price), SUBSTRING_INDEX(GROUP_CONCAT(CAST(open AS CHAR) ORDER BY datetime), ',', 1) AS open, SUBSTRING_INDEX(GROUP_CONCAT(CAST(close AS CHAR) ORDER BY datetime DESC), ',', 1) AS close FROM symbols WHERE date BETWEEN(.. ..) GROUP BY YEARWEEK(date)
Ini pertanyaan cekap mendapatkan semula rekod pertama (terbuka) dan terakhir (tutup) untuk setiap kumpulan, meminimumkan masa pemprosesan untuk besar meja.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod Pertama dan Terakhir Data Terkumpul dengan Cekap dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!