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
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/
Nasıl hızlı bir şekilde mysql veritaba...
Ne kadar büyük bir MySQL veritabanı dü...
MySQL: Büyük VARCHAR vs METİN?...
1153 - bir paket 'max_allowed_pac...
Hızlı okuma çok büyük bir tablo R data...