mysql kullanıcı değişkenleri

Bir işlem için mysql ile kullanıcı dğeişkeni tanımlamam gerekti. işine gereken olur diye kodu buraya yazıyorum.


SELECT * FROM `sozler`
WHERE (IF(kat != @si, @row:=0, @row:=@row+1)) < 4
AND (@si := kat) IS NOT NULL
LIMIT 0,40

Yaptığı işlem: bir tabloda kategori numaraları var (kat), tablodan 40 tane veri çekecek, fakat her kategoriye ait en fazla 4 kayıt çekecek. Bunu yapmak için SUB QUERY veya GROUP kullanmış örnekler gördüm ama iç içe query kullanmayı sevmiyorum, zaten çok fazla kayıt olunca yavaşlık farkediliyor.

 

Yukarıdaki örneğin nispeten daha hızlı çalışacağını düşünüyorum.

 

önce bunu yapıyor:

(IF(kat != @si, @row:=0, @row:=@row+1)) < 4


Sonra bu satırı işleyip sonraki satıra geçiyor.


AND (@si := kat) IS NOT NULL

Henüz yavaşlığını görmedim ama fikirlerinizi yazarsanız sevinirim.

 

Her programcı birgün Php yi tadacaktır
08-03-2013 13:34

    Php

    alicilin Ali Fırat Güler

    Oldukça mantıklı hocam. Sanırım bende bu yöntemi kullanmaya başlamalıyım :)

    08-03-2013 19:27

      Php

      TeaMTurkeR Şenol TÜRKER

      hımm forum kategorileri içindeki konuları listelerken kullanabilirmiyim acaba  bunu hocalarım smiley

      18-12-2013 19:05

        www.Phpkodlari.com © 2009 Herkes Php öğrenecek
        Web tasarım ve eğitim kaynağınız.