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

MySQL memilih baris acak dengan GABUNG dari dua tabel

Ini adalah penyortiran yang memperlambat Anda. Daripada mengurutkan secara acak, cukup pilih product_db.unique_id secara acak

Dalam kueri Anda, ganti ORDER BY RAND() dengan:

AND product_db.unique_id >= ROUND(RAND()*(SELECT MAX(unique_id) FROM product_db))

menggunakan >= bukannya = jika unique_id telah dihapus dari database. Hasil tidak acak seperti memesan dengan rand tetapi kueri akan dieksekusi lebih cepat. Jika mau, Anda dapat menjalankan beberapa kueri dengan = sampai hasilnya ditemukan dan mungkin masih lebih cepat daripada menyortir semua hasil tersebut.

Dengan JOIN eksplisit akan menjadi:

SELECT product_db.image
FROM product_db
JOIN product_page ON product_db.unique_id = product_page.product_unique_id
WHERE product_page.page_id = 3 
AND product_db.status = 'Online' 
AND product_db.unique_id >= ROUND(RAND()*(SELECT MAX(unique_id) FROM product_db))
LIMIT 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan optimal untuk mengambil jumlah kumulatif di MySQL

  2. Tidak dapat terhubung ke server MySQL di (ip atau nama domain)

  3. Perbaiki Akses ditolak untuk pengguna 'root'@'localhost' untuk phpMyAdmin

  4. Mengapa kata kunci MYSQL IN tidak mempertimbangkan nilai NULL

  5. Mysql mengubah ' menjadi '?