SORU
30 EKİM 2009, Cuma


Büyük MySQL veritabanı yinelemeleri hızlı kaldırın

Büyük var (>Milyon satır) MySQL veritabanı yinelemeleri ile berbat. Bütün db onlarla dolu 1/2 1/4 olabileceğini düşünüyorum. Onlardan kurtulmak hızlı (sorgu yürütme zaman yani) lazım. Görünüyor:< / ^ br . kimliği (dizin) | Metin2 | metin3 Metin1|< / ^ br . Metin1 ve Metin2 bileşiminin benzersiz olması gerekir eğer herhangi bir kopyası varsa, metin3 ile tek bir kombinasyon DEĞİL BOŞ kalmalıdır. Örnek:

1 | abc | def | NULL  
2 | abc | def | ghi  
3 | abc | def | jkl  
4 | aaa | bbb | NULL  
5 | aaa | bbb | NULL

...olur:

1 | abc | def | ghi   #(doesn't realy matter id:2 or id:3 survives)   
2 | aaa | bbb | NULL  #(if there's no NOT NULL text3, NULL will do)

Kimlikleri soğuk bir şey yeni, eski tablo kimlikleri bağlıdır.< / ^ br . Gibi şeyler denedim:

CREATE TABLE tmp SELECT text1, text2, text3
FROM my_tbl;
GROUP BY text1, text2;
DROP TABLE my_tbl;
ALTER TABLE tmp RENAME TO my_tbl;

Ya da FARKLI ve diğer çeşitleri SEÇİN.< / ^ br . Küçük veritabanları üzerinde çalışırken, benim sorgu yürütme zaman sadece büyük (asla sonuna kadar, aslında;^.. 20 dk)

Daha hızlı bunu yapmak için bir yolu var mı? Bana bu sorunu çözmek yardım lütfen.

CEVAP
18 EKİM 2011, Salı


1-hat ihtiyacım vardı tam da bunu yapmak için basit bir kod buldu

ALTER IGNORE TABLE dupTest ADD UNIQUE INDEX(a,b);

Alınan: http://mediakey.dk/~cc/mysql-remove-duplicate-entries/

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ADDVOiCE

    ADDVOiCE

    28 Mayıs 2009
  • ArkticPlanet

    ArkticPlanet

    9 ŞUBAT 2010
  • Commander Chalkboard

    Commander Ch

    20 Ocak 2014