12
ตัวอย่างสุ่มอย่างง่ายจากฐานข้อมูล Sql
ฉันจะใช้ตัวอย่างสุ่มอย่างง่ายที่มีประสิทธิภาพใน SQL ได้อย่างไร ฐานข้อมูลที่เป็นปัญหากำลังเรียกใช้ MySQL ตารางของฉันมีอย่างน้อย 200,000 แถวและฉันต้องการตัวอย่างสุ่มอย่างง่ายประมาณ 10,000 คำตอบที่ "ชัดเจน" คือ: SELECT * FROM table ORDER BY RAND() LIMIT 10000 สำหรับตารางขนาดใหญ่มันช้าเกินไปมันเรียกRAND()ทุกแถว (ซึ่งวางไว้ที่ O (n)) แล้วเรียงลำดับทำให้เป็น O (n lg n) ได้ดีที่สุด มีวิธีทำเร็วกว่า O (n) หรือไม่? หมายเหตุ : ในฐานะที่เป็นแอนดรูเหมาชี้ให้เห็นในความคิดเห็นที่หากคุณใช้วิธีการนี้ใน SQL Server คุณควรใช้ฟังก์ชั่น T-SQL NEWID()เพราะ RAND () อาจจะกลับมาเป็นค่าเดียวกันสำหรับทุกแถว แก้ไข: 5 ปีต่อมา ฉันพบปัญหานี้อีกครั้งด้วยตารางที่ใหญ่กว่าและลงเอยด้วยการใช้โซลูชันของ …
93
mysql
sql
postgresql
random