Mengoptimumkan Pemilihan Baris Rawak dalam Jadual MySQL Besar
Mengekstrak 10 baris rawak daripada jadual MySQL yang besar (cth., 600,000 baris) memerlukan strategi yang mengutamakan kelajuan dan kecekapan. Pendekatan naif menggunakan ORDER BY RAND()
terkenal lambat untuk set data yang besar. Kaedah yang lebih berkesan digariskan di bawah:
Pertanyaan berikut menyediakan penyelesaian yang jauh lebih pantas:
<code class="language-sql">SELECT name FROM random WHERE id >= (SELECT FLOOR(RAND() * MAX(id)) FROM random) ORDER BY id LIMIT 10;</code>
Pertanyaan ini berfungsi dengan terlebih dahulu menentukan titik permulaan rawak dalam julat lajur id
menggunakan FLOOR(RAND() * MAX(id))
. Ia kemudian memilih baris yang id
lebih besar daripada atau sama dengan titik permulaan rawak ini. Akhirnya, ia menyusun keputusan dengan id
dan mengehadkan output kepada 10 baris. Ini mengelakkan imbasan jadual penuh yang wujud dalam ORDER BY RAND()
, menghasilkan peningkatan prestasi yang ketara. Pendekatan ini memastikan taburan baris rawak yang agak sekata merentas jadual.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memilih 10 Baris Rawak dengan Cekap daripada Jadual MySQL yang Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!