Ortalama bir shopping cart sayfasında 50 ürün listelendiğini düşünürsen, ana sorgu, + her bir tablo için x 50 sorgudan bahsediyoruz. Resimler tablosu, eğer SEO url tablon varsa o, kategori sorgusu. Evet belki programlama kodunda 2 tane gözüküyor ama 50 adımlık while'ın içinde o. Bağlama koşulları doğru indekslendiği sürece, bunun performansının 150 sorgu yapmaktan daha kötü olacağını iddia etmek garip olur. Bu tarz sorgular iyi optimize edildiğinde zaten 10larca saniye sürmüyor. Öyle olduğu anlarda yanlış bir join veya gereksiz bir sorgu olduğunu hissedebilirsin zaten. Zaten basit mantık gidersen, neden tekli basit sorgu yazmak varken insanlar 3-4 sayfa SQL sorgusu kassınlar daha iyi olmasa.

Performans için join'i önerir misin? Özellikle MySQL'de tek tek sorgu yapmanın daha avantajlı olduğunu söyleyenler var.

PM üzerinden bir arkadaş database JOIN işlemi hakkında bir soru sorduğu için ufak bir rehber hazırlamak istedim. JOIN işlemleri genelde yeni başlayan arkadaşların bilmediği bir husus olduğundan, 1 sorguda yapılabilecek işlemler, onlarca sorguda yapılacak şekilde kodlanmakta ve verimsiz çalıştırılmaktadır. Bu yazıda bu konuya biraz ışık tutmaya çalışacağım. JOIN nedir? Join bir veritabanında iki veya daha fazla veritabanı tablosunu ortak bir paydada bir araya getirmek amacıyla kullanılan SQL sorgu işlemidir. Örneğin bir tablonuzda ürünleriniz var, genel bazı bilgiler ürün adı diyelim. Diğer bir tablonuzda ise ürünler kategorilere atanmış olsun. Belirli bir kategorideki ürünleri listelemek istediğinizde, önce kategori tablosundan isim, sonra kategori X ürün tablosundan eşleşme, ve ürün tablosundan isim yapmanız için 3 sorgu yapmaya ihtiyacınız var. Böyle durumlarda JOIN işlemi bunu tek sorguda yapabilmenizi sağlar. INNER JOIN JOIN tiplerinden bir tanesi INNER JOIN'dir. Farkını örnekle açıklamak daha yararlı olur. Yukarıdaki durumdaki tabloların aşağıdaki şekilde olduğunu varsayalım Tablo=URUN urun_id urun_ismi urun_fiyat Tablo=KATEGORI kat_id kat_ismi TABLO=KATURUN ku_id kat_id -&gt; Kategori tablosuna baglar urun_id -&gt; Urun tablosuna baglar. Elimizde POST veya GET ile gelmiş bir $kat_id değişkeni olduğunu düşünelim. Kategori ID'si olarak. Kategori ismini al. -&gt; SELECT kat_ismi FROM kategori WHERE kat_id='$kat_id' Kategorideki ürümleri al -&gt; SELECT urun_id FROM katurun WHERE kat_id='$kat_id' Yukarıdan aldığın urun_id ile ürünlerin bilgilerini al -&gt; SELECT urun_ismi, urun_fiyat FROM urun WHERE urun_id='$urun_id' 3. adımı while'a alacağınız için yüzlerce sorgu anlamına gelebilir bu. Bunun yerine JOIN kullanmak istersek Kod: