
Dilim döndüğünce php performansı ile alakalı birkaç şey söylemek istiyorum. Hemen başlayalım:
1. mysql_num_rows yerine count kullanın.
Bildiğiniz üzere veya yeni öğrenmiş olduğunuz üzere mysql_num_rows fazla performans tüketir. Onun yerine count komutunu kullanın. Örnek kullanım:
<?php
$sor = mysql_fetch_array(mysql_query("select count(*) from isimler where isim='ilyas'"));
echo 'İlyas adında toplam '.$sor[0].' isim var';
?>
Gördüğünüz gibi diziye atayıp 0. indisi çağırarak mevcut sayıyı görebiliyoruz.
2. Mysqlde left join gibi birleştirme sorguları kullanın
Mysqlden başlamışken Mysqlle devam edelim. Şimdi bir veri tabanı yapısı hayal edin. Dizi tablomuz ve aynı anda bir de kategori tablomuz olsun. Dizimizin hangi kategoride olduğu dizi tablosundan dizi_kategori alanında kayıtlı. Biz hem diziyi almalıyız hem de diziye ait kategori bilgilerini. Normal koşullarda bunun için iki sorgu yazmamız gerekir:
<?php
$dizi = mysql_fetch_assoc(mysql_query("select * from dizi where id='$id'"));
$kategori = mysql_fetch_assoc(mysql_query('select * from kategoriler where id="'.$dizi['dizi_kategori'].'"'));
?>
gördüğünüz üzere iki sorgu yaptık. Bunu left join kullanarak tek sorgu haline getirebilirdik oysaki:
<?php
$dizi = mysql_fetch_array(mysql_query("select * from dizi left join kategori on dizi.dizi_kategori=kategori.id where dizi.id='$id'"));
?>
ne oldu tek sorguya çevirdik. :)
3.Gerekmedikçe mysql_fetch_array kullanmayın mysql_fetch_assoc var!
Öncelikle şu mysql_fetch_array, mysql_fetch_assoc ve mysql_fetch_row arasındaki farklara değinelim.
Bir tablo yapısı düşünün. id, ad, soyad, yas gibi alanları olsun. Siz de bunlar icin bir sorgu yazıyorsunuz.
<?php
$sorgu = mysql_fetch_row(mysql_query('select * from tablo where id=1'));
?>
Yukarıda ile aldık. Bunu ekrana bastırırken $sorgu içine tablonun sıra numarasını girmemiz gerekir.
Uyarı:!! Tablonun sıra numarası her zaman sıfırla başlar.
Söz gelimi echo $sorgu[0] dedik. Tablomuzdaki id alanının değerini yazar. echo $sorgu[1] dersek ad alanının değerini yazar.Ola ki echo $sorgu['id'] dersek hata mesajıyla karşılaşırız.
PHP Performansıyla Alakalı Birkaç İpucu devamı »