[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:43:04 +0200
Message-ID: <ded068c00903050443i19ae87d7p5e063e018a9e8318@mail.gmail.com>

kayıt fazlalığından kaynaklanıyordur. innoDB relation sistemi böyle
sorgulara faydalı oluyormuş. bir de INNER JOIN şekline getirseniz faydası
olabilir. çok şeyi yapmışsınızdır. daha fazla performans için materalized
view lazım. ama o da mysql de yok gibi. ara sıra güncellenen tmp table ları
deneyin. yavaşlık ORDER dan kaynaklanıyor. ilişkisel tablolar mevzusu
önemlidir. üzerinden durmaya değer.

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

> 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 <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 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 <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
>
>
> _______________________________________________
> 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 - 13:29:05 EET

---------

Bu arsiv hypermail 2.2.0 tarafindan uretilmistir.