![]()
Anıl KARADAĞ yazmış:
> Herkese iyi aksamlar MySQL kullanan ve tablolarında 300.000 satir ve
> uzeri veriye sahip ve veritabanindan sorumlu uyelerimizin dikkatine
>
> Suan 350.000 satır veri iceren bir tablom bulunmaktadır. 1 primary key
> ve 2 tane normal index içermekte. Arama yaptigim diger bircok kolonda
> index bulunmuyor.
>
> 1-SELECT a,b,c FROM tablo1 WHERE a='x' AND
> cast(b as date)= '".$date."' ORDER BY rand() LIMIT 10
>
> 2-SELECT COUNT(*) FROM tablo1 WHERE a='x' and
> cast(b as date)= '".$date."' and (c != '' or c is not null)
>
> 3-SELECT MAX(e) FROM tablo WHERE a= '".$cat." ' and
> cast(b as date)= '".$date."' and (c != '' or c is not null)
>
> ve benzeri sorgulari calistirdigim php sayfasi cok gec yukleniyor. Bu
> duruma nasıl cozum bulabilirim. Belirtmen gereken bir nokta tablonun
> dinamik olusudur. Gunluk ortalama bir sayida kayit girilmektedir.
>
> Kayit girilirken db uzerinde cesitli sorgular yapilmaktadir. Kisacasi
> sistemde veri girisi sorgusu ve goruntuleme sorguları ayni zaman
> diliminde gerceklesmektedir gunun belirli bir diliminde.
>
> Cluster konusuna bakiyorum. Onerilerinizi bekliyorum.
>
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama_at_liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
>
öncelikle mysql üzerinde hem insert-update hemde select query ler
calışıyorsa myisam tablosunu şiddetle terketmenizi ve innoDB ye
geçmenizi önereceğim. daha sonra
> 1-SELECT a,b,c FROM tablo1 WHERE a='x' AND
> cast(b as date)= '".$date."' ORDER BY rand() LIMIT 10
bu sorgunuzu
1-SELECT a,b,c FROM tablo1 WHERE cast(b as date)= '".$date."' AND a='x' ORDER BY rand() LIMIT 10
şeklinde değiştirin. primary,unique veya indexli alanlarınızı sorgunuzun en sonuna yazmak suretiyle query oluşturun. oldukça fark ettirecektir.
> 2-SELECT COUNT(*) FROM tablo1 WHERE a='x' and
> cast(b as date)= '".$date."' and (c != '' or c is not null)
>
bu sorguyuda
2-SELECT COUNT(*) FROM tablo1 WHERE cast(b as date)= '".$date."' and (c != '' or c is not null) and a='x'
olarak değiştirin ayrıca alanları cast edip sonra şart oluşturmak pek
mantıklıca değil bence mümkünse alan tipinizi tarih yapın.
> 3-SELECT MAX(e) FROM tablo WHERE a= '".$cat." ' and
> cast(b as date)= '".$date."' and (c != '' or c is not null)
bu sorgunuzuda
3-SELECT MAX(e) FROM tablo WHERE and
cast(b as date)= '".$date."' and (c != '' or c is not null) and a= '".$cat." '
bu şekilde denemenizi öneririm.
kolay gelsin
Atıf CEYLAN
_______________________________________________
Linux-programlama mailing list
Linux-programlama_at_liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama
Received on Sat 05 Apr 2008 - 11:00:44 EEST
![]()