Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mengapa MySQL mengembalikan hasil yang sama saat menggunakan RAND() dalam pernyataan SELECT?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tambahkan kolom sementara dengan nilai

  2. MySQL NULLIF() Dijelaskan

  3. Sambungan otomatis ke PDO hanya jika diperlukan

  4. Bagaimana cara mengelola Peran Pengguna dalam Database?

  5. PHP Periksa apakah string berisi huruf