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

mysql order by Rand() masalah kinerja dan solusi

Pertama-tama, semua hasilkan nilai acak dari 1 hingga MAX(id), bukan 100000000.

Maka setidaknya ada beberapa solusi bagus:

  1. Gunakan > bukan =

    SELECT items FROM tablea where status='0' and id>'$id23' LIMIT 1
    

    Buat indeks pada (status,id,items) untuk membuat kueri ini hanya untuk indeks.

  2. Gunakan = , tetapi coba lagi dengan nilai acak yang berbeda jika Anda tidak menemukan hit. Terkadang dibutuhkan beberapa kali percobaan, tetapi seringkali hanya dibutuhkan satu kali percobaan. = harus lebih cepat karena dapat menggunakan kunci utama. Dan jika itu lebih cepat dan berhasil dalam satu percobaan 90% dari waktu, itu dapat menggantikan 10% lainnya dari waktu ketika dibutuhkan lebih dari satu percobaan. Tergantung pada berapa banyak celah yang Anda miliki dalam nilai id Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL dari desimal (13.6) ke mata uang

  2. Bagaimana Saya Memotong Kutipan Leading dan Trailing dari Baris MySQL?

  3. BULAN () Contoh – MySQL

  4. Koneksi terputus ke server MySQL saat 'membaca paket komunikasi awal', kesalahan sistem:0

  5. Tes penerimaan codeception dalam transaksi database di MySQL