• 09-04-2022, 21:33:06
    #1
    Herkese kolay gelsin.
    Database den duplicate satırları silmeye çalışıyorum.
    Bunun için şu script işi görmesi lazım:
    DELETE t1 FROM articles t1
    INNER JOIN articles t2
    WHERE

    t1.goruntuleme_ < t2.goruntuleme_ AND
    t1.baslik_ = t2.baslik_;
    Yalnız, toplam 60000 satır var ve 10 bin civarı duplicate var.
    dolayısıyla hepsini bi seferde silmek büyük bir işlem ve hosting in mysql ayarları bu kadar uzun işleme izin vermiyor.
    Bi çözüm arıyorum..
    Aklıma şu geldi: belik parça parça uygulayabilirim scripti. Yani önce ID si 5000 den küçük olanlar için sonra 10000 den küçük olanlar vb..
    yalnız mysql konusunda acemiyim. denediğim bikaç şeye hata verdi
    Bu nu nasıl yazarım?
    yani şu scripte bunu ID si 5000 den küçük olan satırlar için yürüt şartı eklenecek:
    DELETE t1 FROM articles t1
    INNER JOIN articles t2
    WHERE

    t1.goruntuleme_ < t2.goruntuleme_ AND
    t1.baslik_ = t2.baslik_;
  • 09-04-2022, 21:45:47
    #2
    sorgunun sonuna LIMIT 1000
    ekle 1000er adet sil zaman aşımı olmaz
  • 09-04-2022, 21:47:53
    #3
    Veritabanını indirip, lokalde işlem süre sınırı olmadan yapabilirsin.
    Ya da şu yazıyı okuyunca çözebilirsin diye düşünüyorum.

    SQL SELECT TOP, LIMIT, FETCH FIRST ROWS ONLY, ROWNUM (w3schools.com)
  • 09-04-2022, 21:51:26
    #4
    MCERAN adlı üyeden alıntı: mesajı görüntüle
    sorgunun sonuna LIMIT 1000
    ekle 1000er adet sil zaman aşımı olmaz

    saol hocam, peki o limit 1000 nasıl eklenecek tam olarak?
  • 09-04-2022, 23:07:43
    #5
    kchmt1 adlı üyeden alıntı: mesajı görüntüle
    saol hocam, peki o limit 1000 nasıl eklenecek tam olarak?
    WHERE

    …t1.goruntuleme_ < t2.goruntuleme_ AND
    t1.baslik_ = t2.baslik_ LIMIT 1000;

    bu şekilde olması lazım hocam
  • 09-04-2022, 23:15:04
    #6
    Bu delete sorgusunun doğrudan canlidaki db de mi calistiriyorsunuz hocam?
    Aman dikkat sakata gelmeyin. Önce locada test edin.
    Hatta silindimi diye bir alan ekleyip onu 1 yapın. Gercekte silmeyin.
    --
    Sonuna limit 1000 derseniz ilk 1000 i getirir.