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 <[email protected]> > 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 <[email protected]> > *To:* Özgür yazılımlarla çeşitli dillerde yazılım > geliştirme<[email protected]> > *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 <[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 > > > _______________________________________________ > 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
