Bu başlık altında herkes buna benzer optimizasyonlarını paylaşırsa çok yararlı olacaktır hepimiz için.
Ben bir alıntı ile başlıyorum.
Ben bir alıntı ile başlıyorum.
MySQL sorguları sağdan sola işlendiği için özel seçimlerinizi (primary key gibi) en sağa yazın.
Tüm alanları seçmek yerine (SELECT *) yalnızca kullanacağınız sütunları seçin (SELECT a, b, c).
Çok nadir değişen bilgileri veritabanına koymak yerine bir dosyaya yazın.
Seçmek ve sıralamak istediğiniz (WHERE ve ORDER BY) alanlar için index kullanın.
Index‘ler aramalarınızı çok hızlandırır, ancak yeni kayıt girişini yavaşlatır (insertion).
Index’lerinizi analiz etmek için EXPLAIN komutunu kullanın.
Yaptığınız aramada yalnızca 1 girdiye ihtiyacınız varsa her zaman LIMIT 1 kullanmalısınız. Böylece MySQL istediğiniz girdiyi bulduğu anda aramayı durdurur.
Eğer sonuçlarınızı
$girdi = mysql_fetch_array($sorgu)
şeklinde alıyorsanız verilere iki şekilde ulaşabilirsiniz: $girdi[0] ve $girdi['sütunismi']. Sütun numarasıyla verilerinize ulaşmıyorsanız ekstradan boşu boşuna bir $girdi[int i] array’i oluşturuyorsunuz demektir. Sadece $girdi['sütunismi'] şeklinde verilerinize ulaşıyorsanız
$girdi = mysql_fetch_assoc($sorgu)
kullanın.
Bazen mysql_free_result() kazandırdığından fazla bellek kullanın. Farkı memory_get_usage() ile kontrol edin.
Veritabanından sürekli aynı bilgileri istemeyin, gerekiyorsa sonucu değişkenlere kaydedin.
Verilerinizi olabildiğince NOT lisanssız tanımlayın. Hem her veri başına 1 bit kazanacak, hem de işleminiz hızlanacaktır.
Verinize uygun türü seçin. Örnek olarak INT unsigned olarak 4294967295′e kadar sayıları tutar, ki bu çoğu zaman çok büyüktür. Uygunsa MEDIUMINT veya SMALLINT kullanın.
Tabloya veri eklerken öntanımlı değerleri kullanın, yalnızca öntanımlıdan farklı değerleri belirtin.
PHP
Birçok blok kullanmak uygulamanızı yavaşlatır.
Hızlı:
< ?
...
...
...
?>
Yavaş
< ? ... ?>
< ? ... ?>
< ? ... ?>
(1) şeklinde bir kod genelde (2)’den hızlı çalışır.
Gerekmediğinde string birleştirmeyi (concatenation) kullanmayın.
Hızlı:
“SELECT id FROM tabell WHERE id = $_SESSION[id] LIMIT 1″
Yavaş
“SELECT id FROM tabell WHERE id = “.$_SESSION[’id’].” LIMIT 1″
String’lerinizi çift tırnak (”) yerine tek tırnakla (’) açıp kapatmanız uygulamayı biraz hızlandırabilir. Php “…” içindeki değişkenlere bakarken ‘…’ içindeki değişkenleri önemsemez. Tabii ki bunu string içerisine değişken yazmak istemediğinizde kullanmalısınız.
String’leri ve değişkenleri echo ile bastırken nokta (.) yerine virgül (,) kullanmak daha hızlıdır. Örnek:
echo “bir degisken” , $degisken, “yaziyor…”;
Not: Bu yalnızca birden fazla string parametresi alabilen echo fonksiyonu için geçerlidir.
echo, print‘ten hızlıdır.
for döngüleriniz için üst limiti döngüden önce bir değişkene atıp kullanmak her turda bu sayının tekrar tekrar hesaplanmasını engeller:
Hızlı:
$maxvalue = 100/10;
for($i=0; $i<$maxvalue; $i++){
// kodlar
}
Yavaş:
for($i=0; $i<100/10; $i++){
// kodlar
}
İşiniz bittiğinde değişkenlerinizi ve özellikle büyük array’lerinizi unset() kullanarak belleğe geri döndürün.
Son söz ve kaynaklar
Mümkünse her veritabanı güncellemesinden sonra veya belli zaman aralıklarında statik html dosyaları oluşturmak tabii ki en iyi optimizasyon olacaktır.
Daha detaylı bilgi için aşağıdaki adresleri ziyaret edebilirsiniz:
Alıntı Yapılan URL