[Linux-programlama] Re: MySQL IF() performans problemi

---------

[Linux-programlama] Re: MySQL IF() performans problemi

From: Elvin Şiriyev <elvin_at_siriyev.net>
Date: Thu, 5 Mar 2009 14:04:36 +0200
Message-ID: <ded068c00903050404x5a1a4a6dh10108e48ed81c6f@mail.gmail.com>

sorgu böyle hızlanabilir ama ne kadar emin değilim:

SELECT
    tablo1.id AS id,
    sehir,
    il,
    ilce,
    semt
FROM tablo1, tablo2
WHERE tablo1.grup='1' AND
tablo1.durum='1' AND
tablo1.islem_id=tablo2.id AND
tablo2.durum='1'
ORDER BY sehir=34 DESC, ilce=1111 DESC, semt=9999 DESC

NOT: daha önce gönderdiğim sorgu çalışmıştır, şöyleki deger=2 durumu en sona
bırakmıştır.
ORDER BY deger=2 DESC yazarsanız 2yi en sona değil en başa getirebilirsiniz.

2009/3/5 OKAN <liste_at_ari-tech.com>

> Ne yazık ki "ORDER BY deger=2" gibi bir SQL cümlecigi bir islem yapmıyor.
> SQL sorunsuz calisiyor ama "ORDER BY deger" ile aynı sonucları üretiyor.
>
> Orijinal SQL Ornegi:
>
> SELECT tablo1.id AS id, sehir, il, ilce, semt,
> IF(sehir=34, '1', '0') AS s_sehir,
> IF(ilce=1111, '1', '0') AS s_ilce,
> IF(semt=9999, '1', '0') AS s_semt
> FROM tablo1, tablo2 WHERE tablo1.grup='1' AND tablo1.durum='1' AND
> tablo1.islem_id=tablo2.id AND tablo2.durum='1' ORDER BY s_sehir DESC,
> s_ilce DESC, s_semt DESC
>
> Saygılar
>
>
> ----- Original Message -----
> *From:* Elvin Şiriyev <elvin_at_siriyev.net>
> *To:* Özgür yazılımlarla çeşitli dillerde yazılım geliştirme<linux-programlama_at_liste.linux.org.tr>
> *Sent:* Thursday, March 05, 2009 1:38 PM
> *Subject:* [Linux-programlama] Re: MySQL IF() performans problemi
>
> SELECT isim, deger, IF (deger=2, "1", "0") AS siralama FROM tablo ORDER BY
> siralama DESC
>
> sorgusunu bir de
>
> SELECT isim, deger FROM tablo ORDER BY deger=2
>
> olarak deneyin. uygulamadaki sorguyu gönderirseniz belki önemli
> düzenlemeler yapılabilr.
>
> 2009/3/5 OKAN <liste_at_ari-tech.com>
>
>> Merhabalar, Mysql uzerinde belli alanlar eger istedigim degerde ise once
>> almak icin asagidaki gibi IF deyimli bir sorgu kullanıyorum.
>>
>> SELECT isim, deger, IF (deger=2, "1", "0") AS siralama FROM tablo ORDER BY
>>
>> siralama DESC
>>
>> Yani deger='2' olan satırları başa alıyorum. Gercek uygulamada bu IF
>> degimlerinden 6 adet kullandım ve istedigim veriye ulaşabiliyorum.
>>
>> Ancak ne yazık ki, bu Mysql için çok pahalı bir yontem, Mysql performansı
>> boyle bir sorguda cok kotu bir durum alıyor. (1 sorgu yaklaşık 1sn suruyor
>> ve mysql anında yavaşlıyor)
>>
>> Amacım, belirledigim 6 alanda eger istedigim kayıtlar varsa onları on
>> plana almak. Bunu performans sorununu aşarak nasıl başarabilirim?
>>
>> Şimdiden ilgilenen arkadaşlara teşekkür ederim.
>>
>> OKAN ARI
>>
>>
>>
>> _______________________________________________
>> Linux-programlama mailing list
>> Linux-programlama_at_liste.linux.org.tr
>> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>>
>>
>
>
> --
> Elvin Şiriyev
> http://siriyev.net
>
> ------------------------------
>
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama_at_liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
>
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama_at_liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
>

-- 
Elvin Şiriyev
http://siriyev.net

_______________________________________________
Linux-programlama mailing list
Linux-programlama_at_liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama
Received on Thu 05 Mar 2009 - 12:50:29 EET

---------

Bu arsiv hypermail 2.2.0 tarafindan uretilmistir.