Postgresql'de büyük bir tabloya bir indeks ekledim ve yaklaşık 1 saniye sürdüm (açıkçası beni şaşırttı).Dizini neden düşürmek onu oluşturuyor?
İndeksi düşürmeye gittiğimde, dönüş yapmadan> 200 saniye çalışmasına izin verdim ve sonunda bırakma işlemini iptal ettim.
CREATE INDEX idx_cservicelocationdivisionstatus_inversed
ON cservicelocationdivisionstatus (cservicelocationdivisionid, startdate, enddate DESC);
çok az zaman alır, ancak
DROP INDEX idx_cservicelocationdivisionstatus_inversed;
vazgeçtim ve iptal böylece uzun sürdü.
cservicelocationdivisionstatus
tablosunda 6 sütun ve yaklaşık 310k veri satırı vardır.
Dizini kaldırmanız neden bu kadar uzun sürüyor?
DÜZENLEME: This page, mySql için, birden çok dizine sahip bir tablonun tabloyu kopyalayacağını ve tüm satırları bıraktığınız dizini olmadan yeniden ekleyeceğini belirtir. (Daha da kötüsü, mySql ile, aynı tabloda birden çok dizin bırakırsanız, tüm indeksler olmadan verileri bir kez akıllıca ve yeniden kopyalamak yerine, kaldırdığınız her dizin için tabloyu bir kez yeniden kopyalayacaktır. bırakıyor.) Postgres ile böyle bir şey oluyor mu?
Dizin/tablodaki kilitleri kontrol edin: http://www.postgresql.org/docs/current/static/monitoring-locks.html Bir sorgu tarafından kullanıldığında indis bırakamazsınız. –