Daha hızlı bir dizin oluşturmak için nasıl?

3 Cevap php

Ben MySQL benim tabloda 10mln satırları ve bu tabloda 7 endeksler var. Ben 8. eklemeye çalıştığınızda Şimdi bunu yapmak için sonsuz zaman alır. Kolay ve hızlı 8 dizin eklemek için bu sorunu geçmenin bir yolu var mı?

3 Cevap

Bu MySQL sadece berbat bin yollarından biridir. Tasarım gereği ...

Detaylar: http://lists.mysql.com/mysql/202489

Bu cevap için karma kaybedersem ve umurumda değil.

Hayır, bu bir dizin oluşturmak için gereken zaman olan veri miktarı ile doğru orantılıdır. MS SQL Ben yaklaşık 10 dakika içinde birçok kayıtları ile bir masaya dizin oluşturabilirsiniz.

DÜZENLEME: Yorum gördükten sonra, sonsuz ayrıntılı lütfen. Tanım olarak bunu bitmez diyorsun, benim cevap uzun süren bir dizin oluşturma ve sonsuz değil ilgilidir.

Hangi motoru kullanıyorsunuz? ALTER TABLE uygulanması ... INDEX önemli ölçüde değişir CREATE.

MyISAM kullanarak, herhangi endeksi değişim tam bir tablo yeniden gerektirir. Bu motor doğasında değil, fakat bir hata düzeltildi olmamıştı.

, InnoDB kullanarak bir ikincil dizin oluşturma bir tablo yeniden gerektirir, ancak InnoDB eklentisi (ziyade yaşlı, sevk motoru) kullanılarak eğer bu optimizasyon kullanılabilir değildir. Kümelenmiş çünkü birincil anahtar değiştirme, her zaman, bir yeniden gerektirir.

Tüm varolan dizinleri yeniden yanı sıra, işlemi tamamlamak için, satırları yeniden gerektiği gibi (iki durumda da içinde) tablosunu yeniden bir sürü iş gerektirir. Masa RAM (kolayca yapmalıyım gibi 10M satırlar geliyor) sığar, bu nispeten hızlı olduğunu.

Oldukça pahalı ram sığmayan bir tablo Yeniden, ben eğer mümkünse kaçınılmalıdır bulunuyor öneririz.

Ram sığmayan bir tek dizin yeniden çok pahalı ve en iyi kaçınılmalıdır.

Ne kadar sıklıkla yeni dizinleri eklemek gerekiyor? Belki dizin zaten oluşturulmuş olan tabloları doldurabilirsiniz?