Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menyoal Sampel Rawak dengan Cekap daripada Pangkalan Data MySQL yang Besar?

Bagaimanakah Saya Boleh Menyoal Sampel Rawak dengan Cekap daripada Pangkalan Data MySQL yang Besar?

Linda Hamilton
Linda Hamiltonasal
2025-01-05 14:50:42484semak imbas

How Can I Efficiently Query a Random Sample from a Large MySQL Database?

Menyiasat Sampel Rawak daripada Pangkalan Data MySQL dengan Kecekapan

Pendekatan dan Had Awal:

Kaedah mudah untuk menghasilkan sampel rawak menggunakan SELECT * FROM table ORDER BY RAND() LIMIT 10000 menghadapi kesesakan prestasi dengan meja besar. Pendekatan ini adalah intensif dari segi pengiraan kerana keperluan untuk mengisih keseluruhan jadual, menjadikannya tidak praktikal untuk jadual dengan ratusan ribu baris.

Teknik Persampelan Dioptimumkan:

An alternatif yang cekap ialah menggunakan pertanyaan berikut:

SELECT * FROM table WHERE rand() <= .3

Pertanyaan ini menggunakan prinsip berikut:

  • Penjanaan Nombor Rawak: Fungsi rand() menjana nombor rawak antara 0 dan 1 untuk setiap baris.
  • Pemilihan Bersyarat : Setiap baris kemudian dinilai untuk menentukan sama ada ia perlu dimasukkan ke dalam sampel berdasarkan sama ada nombor rawak kurang daripada atau sama dengan 0.3.

Kelebihan Pendekatan ini:

  • Ia adalah O(n), kerana tiada pengisihan diperlukan.
  • Mekanisme penjanaan nombor rawak MySQL memastikan pengagihan nilai yang seragam.
  • Sebaliknya, ORDER BY RAND() pendekatan ialah O(n lg n), menjadikannya jauh lebih perlahan untuk set data yang besar.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyoal Sampel Rawak dengan Cekap daripada Pangkalan Data MySQL yang Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn