//aşağıda select * from demişsin. yani o tablodaki tüm sütunları çekiyorsun. ancak sadece kullanacağın sütunları çekmelisin ki, işine yaramayacaklar boşuna işlenmesinler ve bellekte yer tutmasınlar $sorgu = mysql_query("Select * From tablo where alan='".$_POST['alan']."''",$db);
//mysql_fetch_array yerine mysql_fetch_assoc kullanman yine işlemciyi ve belleği rahatlatacaktır. mysql_fetch_array sütunları alıp sıralı array'e yerleştiriyor, manasız.
while($sonuc=mysql_fetch_array($sorgu)) {
//burada kodun devamıyla ilgili bilgi mi vermek istemedin de mi böyle yaptın anlamadım. yani, kullanıcının isteğinden aldığın bişeyi, veritabanında kaç taneyse o kadar ekrana basmaktasın şu an. oldukça manasız bir durum. eğer dediğim sebepten dolayı burda böyle yazdıysan sıkıntı yok ancak öyle değilse sıkıntı var. echo $sonuc['alan'];
}
40 milyon satırla uğraşmak o kadar büyük bir mesele değil. asıl hız kaybını da tablonun 'key''leri ve cache mekanizması yüzünden yaşadığına eminim. 'foreign key', 'primary key' gibi değerleri internette araştır ve bak. Hatta eğer uygun olursa, ben de sisteme bi bakmak isterim, kolay gelsin
eğer bilinen bir kolondan veri çekilecekse * işareti yerine istenen veri grubu yazılmalıdır. Örnek $degisken=mysql_query("Select id From tablo where....") Bu durumda tabloda sadece id aranır diğerleri dikkate alınmaz.Birden fazla veri grubu tayin edecekseniz id,ad,il,ilce gibi uzatabilirsiniz. * (yıldız) işareti ilgili satırdaki tüm verileri çekmeye çalışır ve gecikmeye sebep olur.
veri tabanı boyutu 6 GB
Kayıt Sayısı 40.000.000
Şeklinde Yapıyorum Yalnız Çok Yavaş Çalışıyor Bunu En Hızlı Nasıl Bir Sorguyla Yaptırabilirim..
Yardımlarınız İçin Şimdiden Teşekkürler