Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Persampelan Rawak Mudah dengan Cekap dalam MySQL?
Pensampelan Rawak Mudah yang Cekap dalam MySQL
Banyak aplikasi memerlukan keupayaan untuk mengekstrak sampel rawak mudah daripada jadual pangkalan data yang besar. Walau bagaimanapun, menggunakan kaedah yang kelihatan intuitif SELECT * FROM table ORDER BY RAND() LIMIT 10000 boleh menjadi sangat perlahan untuk jadual dengan berjuta-juta baris.
Penyelesaian Lebih Cepat
Pendekatan yang lebih cekap ialah menggunakan fungsi rand() untuk menetapkan nombor rawak kepada setiap baris, kemudian tapis jadual berdasarkan nombor ini:
SELECT * FROM table WHERE rand() <= 0.3
Cara Ia Berfungsi
Kaedah ini menjana nombor rawak antara 0 dan 1 untuk setiap baris. Jika nombor ini kurang daripada atau sama dengan 0.3 (30%), baris dipilih untuk sampel.
Kelebihan
Versi Diperbaiki
Untuk kecekapan yang lebih besar, pertimbangkan untuk mensampel baris kepada 2-5x saiz sampel yang anda inginkan dan mengisihnya mengikut nombor rawak menggunakan indeks, kemudian memangkas keputusan kepada saiz yang dikehendaki:
SELECT COUNT(*) FROM table; -- Use this to determine rand_low and rand_high SELECT * FROM table WHERE frozen_rand BETWEEN %(rand_low)s AND %(rand_high)s ORDER BY RAND() LIMIT 1000
Kaedah ini menggunakan imbasan indeks untuk mengurangkan saiz data sebelum mengisih, menjadikannya sesuai untuk jadual besar.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Persampelan Rawak Mudah dengan Cekap dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!