Mysql Best Practices

Mysql query yazarken daha rahat etmek için birkaç en iyi uygulama örneği:

Satıriçi yorumlar kullanılmalıdır

/* Bu sorgu kullanıcıları listeler */

Boşluk tuşu yerine TAB tuşu tercih edilmelidir

birden fazla AND operatörü kullanılıyorsa WHERE den sonra 1=1 kullanılıp sonraki satırlar AND ile başlatılarak ileride değişiklik yapılması daha kolay hale gelebilir.

Tablo ve sütun isimleri anlaşılabilir olmalıdır

Tablo ve stun isimleri status gibi default mysql values’e ait ise query içerisinde backthick ( ` ) ile birlikte kullanılması gerekir.

Select from * yapısı kullanılmamalıdır önemli performans kayıplarına yol açabilir

Mümkün olduğunca LIMIT 1 kullanılmalıdır (eğer cevap olarak sadece bir satır bekleniyorsa)

Sütunların data tipini belirlemek çok önemlidir integer tanımlanan bir sütun bir süre sonra kabul edilen değerden daha büyük bir değer kaydetmesi istendiğinde hata vermeyecektir bir şekilde onu  değiştirerek kaydedecektir fakat uygulamanız onu istediği halinde aradığında bulamayacaktır.

Performans kazanmak için mysqlde index’lerin çok olduğu tablolarda insert ve delete işlemlerinin yavaş yapıldığı göz önüne alınarak tablomuzda deleted adlı sütun oluşturup veri silindiğinde deleted sütununu 1 olarak update etmemiz performansa katkı sağlayacaktır.

Kaçınılması Gerekenler – 1

order by rand() fonksiyonu mysql’de işimizi kolaylaştıran bir fonksiyon olmakla birlikte mysql de çok fazla kaynak tüketimine sebep olmaktadır “Order by rand() limit 1” komutunu somutlamak gerekirse bir kitaplıktaki tüm kitapları önce yere indirip onları rastgele olarak kitaplığa tekrar dizdikten sonra kitaplığın ilk rafında en soldaki kitabı almaya eşdeğerdir.Bu kitap rastgele olmakla birlikte neden bütün kitapları rastgele dizmek için kaynak tüketelim ki?
Back-end de rastgele bir sayı üreterek index li stundan rastgelen kitabımızı alabiliriz.

Kaçınılması Gerekenler – 2

Mysql de stun sayısını öğrenmek istediğimizde “mysql_num_rows()” komutuyla öğrenebiliyoruz fakat aşağıdaki gibi sayarsak verinin tümünü mysql size yolladıktan sonra sayım gerçekleştirecektir.

$sonuc = mysql_query("SELECT * from BUYUK_TABLO");
$sayi  = mysql_num_rows($sonuc);

Bunun yerine

$sonuc = mysql_query("SELECT count(*) from BUYUK_TABLO");
$sayi  = mysql_result($sonuc, 0);

Sorgusuyla sayımın mysql tarafında yapıldıktan sonra sadece sonucun gönderilmesini sağlayabiliriz.

Varchar VS Char

Char:
Sabit Uzunluk (Max 255)
Static Memory Kullanımıyla Varchar a göre daha hızlıdır.
Char sondaki boşluğu her zaman siler.

Varchar:
Alphanumeric veri depolamada kullanılır.
MySQL 5.0.3 Öncesi max 255 karakter desteklerken sonrasında 65,535 karaktere kadar veri saklanabilir.
Dinamik Memory Allocation kullanır Char a göre daha yavaştır.