• 20-03-2023, 02:07:21
    #1
    Merhaba, random 20 adet veri çekicem 500k üzerinde veri mevcut hızlı ve benzersiz şekilde gelmesi gerekli bunun için bir query önerebilir misiniz?
  • 20-03-2023, 03:06:36
    #2
    Aşağıdaki şekilde dener misiniz?
    emirkrgz adlı üyeden alıntı: mesajı görüntüle
    Merhaba, random 20 adet veri çekicem 500k üzerinde veri mevcut hızlı ve benzersiz şekilde gelmesi gerekli bunun için bir query önerebilir misiniz?
    SELECT * FROM tablo_adi ORDER BY RAND() LIMIT 20;
  • 20-03-2023, 03:11:36
    #3
    bunu denedim ancak aynı sonuçları döndürüyor bazen unique şekilde olması gerekli @ahmtcn37;
  • 20-03-2023, 03:12:25
    #4
    emirkrgz adlı üyeden alıntı: mesajı görüntüle
    bunu denedim ancak aynı sonuçları döndürüyor bazen unique şekilde olması gerekli @ahmtcn37;
    Böyle deneyin bi
    SELECT DISTINCT stün FROM tablo_adi ORDER BY RAND() LIMIT 20;
  • 20-03-2023, 03:15:12
    #5
    DISTINCT basınca şu senaryo olmaz mı mesela 20 veri gelmesi lazım 2 tanesini aynı attı 18 olarak basacaktır bu sefer yanlış bilmiyosam öyle oluyor
  • 20-03-2023, 03:46:45
    #6
    elimde veri olmadığı için şu an deneyemiyorum o yüzden bir şey diyemiyorum
  • 20-03-2023, 20:07:36
    #7
    ilk queryiniz

    select tablo.id, tablo.veri1, tablo.veri2 from tablo where 1=1 order by rand(tablo.id) limit 20

    daha sonra bu query den dönen sonuçlardan id leri toplayın sonraki tablo.id not in deki parantez içine , ile ayrılacak şekilde koyun.

    select tablo.id, tablo.veri1, tablo.veri2 from tablo where tablo.id not in (1,2,3,4) order by rand(tablo.id) limit 20

    rand a index i olan bir sütün kullanın ve select * kullanmayın.
  • 20-03-2023, 20:28:41
    #8
    Her seferinde unique gelmesini istiyorsanız sorgulardan dönen değerlerin idlerini bir yere kaydettirip o idleri sorguda exlude etmeniz gerekmektedir.

    Örneğin aşağıdaki sorguda id1, id2, id3 diye örneklendirdiğim idler hariç rastgele bir veri getirilecektir.
    Örnek sorgu: SELECT * FROM tablo_adi WHERE id NOT IN (id1,id2,id3) ORDER BY RAND() LIMIT 20;