Haklısınız, IF()'lere ihtiyac yokmuş, ben ORDER BY deger=2 şeklinde doğru sonuc 
verdigini fark etmemişim, çalıpyır bu şekilde. 
Ancak ne yazık ki performansa olumlu yonde neredeyse hic katkısı olmadı. Aynen 
1sn'yeye yakın suruyor boyle bir sorgunun yanıtlanması.

Index'leri kontrol ettim, EXPLAIN cıktılarına bakıyorum ama ne yazık ki bir 
sonuca ulasamadım.

Baska yontemlere de acık durumdayım aslında, asıl amacım, su ki. 
Sehri İstanbul, ilçesi Kadıköy, semti Göztepe olan kayıtları önce almak 
istiyorum, sonra diger kalanlara ihtiyacım var. Bu konuda farklı yaklasımlar da 
onerirseniz denemek isterim. 
Tabi ilk tercihim SQL ile bu sorunu cozebilmek.
Saygılarımla
  ----- Original Message ----- 
  From: Elvin Şiriyev 
  To: Özgür yazılımlarla çeşitli dillerde yazılım geliştirme 
  Sent: Thursday, March 05, 2009 2:04 PM
  Subject: [Linux-programlama] Re: MySQL IF() performans problemi


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

Cevap