Rastgele MySQL satır kaçınarak delikleri ise

2 Cevap php

Ben büyük bir MySQL kullanıcı tabloya sahip ve (PHP kullanıyorum) ondan altı rastgele satır almak gerekiyor. Tablo otomatik artırılır bir dizin sütun vardır. Tek sorun bazı kullanıcıların hesaplarını devre dışı ya da her neyse çünkü bazı satırlar, etkin olarak işaretlenmiş olmasıdır. Ben sadece satırları saymak ve sonra bazıları inaktif olacak çünkü aralığından rastgele bir sayı kapmak anlamına gelir.

Nasıl verimli RAND () kullanmadan ve etkin olmayan bir kullanıcının sorgulamak için çalışıyorum olmadan rastgele satır alabilirim?

Teşekkürler!

2 Cevap

WHERE `inactive` = 0 LIMIT random_offset, 1

random_offset, (1-COUNT aktif kullanıcıların rasgele gibi) PHP önceden hesaplanmış olduğu. Ve sonuç 6 UNION ed sorgu oluşur.

Eğer RAND tarafından çok yavaş sırasını () yöntemi kaçınmak istiyorsanız, burada delik yönetmek için çeşitli seçenekler ile çeşitli alternatifler vardır

http://stackoverflow.com/questions/211329/quick-selection-of-a-random-row-from-a-large-table-in-mysql