2011-11-22 24 views
5

komutunu kullanarak:MySQL neden birincil anahtarı bırakmak için geçici bir tablo kullanıyor?

ALTER TABLE my_table DROP PRIMARY KEY; 

durumu (GÖSTER processlist olduğunda) gibi görünür:

copy to tmp table 

Neden birincil anahtar kısıtlaması "drop" için tmp tablo kullanmak gerekir? Kompozit bir birincil anahtarın durumunu ele alın (

+0

"application detail" ;-) Temel veri kümelemesi değişikliklerinden şüpheleniyorum - örn. Söz konusu motorda bir "yığın" ya da başka bir şekilde yeniden kümelenmeler hareket eder? (InnoDB? MyISAM?) Bir DDL işlemi olduğundan - ve ortak bir değil - özellikle "en iyi yol" genellikle "en iyi yol", özellikle de iyi test edilmiş/doğrulanmış kod yollarını yeniden kullanabiliyorsa. –

cevap

5

. Bu durumda, DB motoru, sentetik satırlardan yeni bir kümelenmiş dizin oluşturmak zorundadır. (Satırların fiziksel olarak disk üzerinde birincil anahtar tarafından düzenlendiğini unutmayın.) Bu durumun çok az olduğu düşünüldüğünde, birincil anahtarınızın zaten bir tamsayı olduğu özel durumu ele almaya değmez.

İlgili konular