2013-07-20 23 views
7

Truncate table table_name kullanıyorum; Yaklaşık 1 milyon satırlık bir tablo üzerinde, ama son 3 saatten beri sürüyor, çok uzun sürüyor.kesilmiş masa çok uzun sürüyor, normal mi?

Normal mi? Tüm satırları bir tablodan silmenin başka bir yolunu önerir misiniz, bu daha hızlı olabilir mi?

+2

Hangi motor? MYISAM veya InnoDB – hjpotter92

+0

Ayrıca, lütfen kontrol edin: http://bugs.mysql.com/bug.php?id=68184 – hjpotter92

+0

Şu anda tabloyu kullanan başka bir işlem var mı? – Ben

cevap

30
Truncate alışkanlık gibi bazı durumlarda işe

,

Eğer

Kolay endeks şeylerin tür ve bazı yabancı anahtar kısıtlamaları varken i önermek yolu

RENAME TABLE table_name TO t1; 

CREATE TABLE table_name LIKE t1; 

DROP TABLE t1; 

ya da DELETE FROM table_name;

kullanabilirsiniz 0
+2

acımasız ... Onu seviyorum :) Verilere gerçekten ihtiyacınız yoksa; Bu muhtemelen bunun için en iyi yoldur. – Trent

+0

kabul etti, daha iyi bir yoldur –

+1

@smratikatiyar: Bu sizin için çalışıyorsa cevabı kabul edin. –

1

Sorgunuz yürütülürken kilitlenmenin gerçekleştiğine inanıyorum, bu yüzden onu öldürmek daha iyi.

Tek bir sorguda küçük yığınları silerek çok sayıda veriyi sildim (10k iyi çalışıyor).

Yani belki doğru için bunu yapacak bazı script

+1

Eğer kesik yavaşsa aynı yapıya sahip yeni bir tablo oluşturmayı ve sonra eski olanı bırakmayı düşünüyorum, bunun oldukça hızlı olacağını düşünüyorum. pls bu konuda görüşlerinizi paylaşın. –

0

Uzun zamandır kesilmiş bir parça aldım (6 dakikadan fazla) ve sonra iptal ettim. Ya da öyle düşünmüştüm. Aslında, bu adım bir saniyeden daha az sürdü ve adım iki eylemi iptal ettim - İşlem Çıktı penceresi güncellenmedi.

0

Ayrıca, yukarıdaki çözümden hiçbiri işe yaramazsa, MySQL hizmetini veya tüm sistemi bir kez yeniden başlatmayı denemeniz önerilir.

İlgili konular