Benih Rand()
MySQL menggunakan jam sistem untuk menyemai RAND()
ketika tidak ada nilai kedua. Nilai benih dalam mikrodetik, dan saya tidak dapat mereproduksi masalah RAND()
menghasilkan nilai yang sama dua kali seperti yang Anda gambarkan.
Jika Anda membuka MySQL Workbench dan menjalankan dua pernyataan secara bersamaan. Outputnya berbeda untuk masing-masing.
SELECT RAND();
SELECT RAND();
Saat Anda membuka banyak tab dan mendapatkan hasil yang sama. Ini mungkin masalah caching, tetapi Anda menyatakan bahwa Anda sedang mencap URL untuk mencegah caching. Jadi, aktifkan SQL logging di server dan verifikasi bahwa kueri baru sedang dipanggil.
Kinerja Rand()
ORDER BY RAND()
lambat karena membutuhkan MySQL untuk membaca seluruh tabel. Bahkan ORDER BY RAND() LIMIT 1
masih membutuhkan MySQL untuk membaca seluruh tabel.
PERBARUI:
Anda dapat melihat nilai acak yang dihasilkan SQL.
$query = "SELECT *, RAND() AS `X`
FROM customers
WHERE customer_group='consumables' AND customer_updated < DATE_SUB(NOW(), INTERVAL 1 DAY)
ORDER BY `X`
LIMIT 10";
Itu akan menyertakan kolom X
untuk setiap baris. Nilai acak yang digunakan untuk mengurutkan kueri. Tambahkan ini ke output dan lihat apakah setiap browser benar-benar mengembalikan kumpulan hasil yang sama dari MySQL.