1 milyon row MySQL icin hicbir sey. Birkac GB'lik RAM olan bir makinada bile 10 milyonlarca row olan tablolarda cok rahat calisir. Sadece schema yapini duzgun kurgulaman lazim. Normalization ve indexing cok onemli. Yoksa veriyi cekerken catlarsin.
6, 7 yıl önce paylaşımlı hosting ile 1 milyon satırı olan tablo kullanmıştım bir sorun yaşamadım. Sadece primary key vardı arama sorgusu da kullanmıyordum. Düzgün sorgular ve index yapısı ile 1 milyon satır MySQL için önemli bir yük oluşturmaz diye düşünüyorum.
Bu tablolardaki sütunların Index'e sahip olması çok önemli. Basit bir örnek vermek gerekirse, 1 milyon kullanıcı arasından sadece konu sayısı 100'ün üstünde olan bir kullanıcının verisini almak istediğinde Indexing olmadığı sürece sana çok pahalıya patlayabilir. Ancak doğru Indexing ile bu işlem saniyeler sürmeden bile tamamlanabilir. Senin burada ne yapman gerekir, konu sayılarının tutulduğu sütunu Index olarak işaretlemen gerekir, bu sayede konu sayısı ile ilgili bir sorgu yaptırdığında sorgu çok daha hızlı tamamlanır.
MySQL yapısında Index kullanımı WHERE, JOINS (Hepsi), ORDER BY, GROUP BY, UNIQUE, FOREIGN KEY baskısı gibi birçok işlemin tamamlanmasını ciddi oranda hızlandırır. Bahsettiğim bu hız artışını 20-30ms olarak düşünme, tamamlanması 300ms süren SQL sorgularını Indexing yaptıktan sonra 1ms'nin altında tamamladığımı bile hatırlıyorum.
Ancak bunları hızlandırıyor diye SQL tablondaki tüm sütunlara Index vermeyi düşünme sakın, sadece sorgularda kullandığın sütunlara Index eklemelisin. Çünkü eklediğin her Index veritabanına yeni bir veri eklemek istediğinde yani INSERT yapmak istediğinde senin kabusun olarak geri dönecektir, çünkü her ekleme yapıldığında MySQL'in o eklenen veriyi de Indexlemesi gerekir ve bu sana performans kaybı olarak yansır. O nedenle Indexing'i tam tadında kullanıp doğru optimizasyonu yapman gerekir.