Zaten ileri sürülmüştür indeksleme yanı sıra, onlar büyükse de bölümleme tabloları içine bakmak isteyebilirsiniz.
Partitioning in MySQL
Biz çok kısıtlı bilgi var çünkü, burada spesifik olmak zor, ama bölümleme ile birlikte uygun indeksleme çok uzun bir yol gidebilirsiniz. Indeksleme doğru uzun bir konu olabilir, ama bir çok genel anlamda size karşı sorgu dizin sütunları isteyeceksiniz.
Örneğin, çalışanların bir tablo var diyelim, ve SSN, FName lname Her zamanki sütun var. Bu sütunlara ek olarak, biz de tabloda bir ek 10 sütun var olduğunu söylerim.
Şimdi bu sorgu var:
SELECT FNAME, LNAME FROM EMPLOYEES WHERE SSN = 'blah';
SSN olasılıkla burada birincil anahtar olabilir ve zaten benzersiz bir dizin olabileceği gerçeğini göz ardı ederek, büyük olasılıkla sütunları içeren başka bir bileşik endeksi (SSN, FNAME, NAME oluşturarak bir performans yararı görecekti .) Bir sıralı ve küçük bir alanda gerekli tüm değerleri içerdiğinden veritabanı sadece bileşik endeksi bakarak bu sorguyu tatmin edebilir çünkü bu faydalıdır nedenidir. (Yani, daha az I / O) olduğunu. SSN üzerine dizin sadece tam tablo taraması yapmak için daha iyi bir erişim yöntemi olsa da, veritabanı hala indeksi (I / O) için veri bloklarını okumak kayıtlarına işaretçileri içerecektir değer (ler) bulmak zorundadır Fname ve lname için gerçek değerleri almak için: sorgu karşılamak için gerekli, daha sonra (daha fazla rasgele I / O olarak okunur) farklı veri blokları okumak gerekir.
Bu tabii ki çok basitleştirilmiş olduğunu, ancak bu şekilde indeksleri kullanılarak büyük ölçüde I / O azaltmak ve veritabanı performansını artırabilirsiniz.
Burada bazı diğer bağlantılar faydalı olabilir: