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 <[email protected]>

>  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 <[email protected]>
> *To:* Özgür yazılımlarla çeşitli dillerde yazılım 
> geliştirme<[email protected]>
> *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 <[email protected]>
>
>>  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
>> [email protected]
>> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>>
>>
>
>
> --
> Elvin Şiriyev
> http://siriyev.net
>
> ------------------------------
>
> _______________________________________________
> Linux-programlama mailing list
> [email protected]
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
>
> _______________________________________________
> Linux-programlama mailing list
> [email protected]
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
>


-- 
Elvin Şiriyev
http://siriyev.net
_______________________________________________
Linux-programlama mailing list
[email protected]
http://liste.linux.org.tr/mailman/listinfo/linux-programlama

Cevap