Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi
Ön Sipariş Talebinde Bulunan Üyelerimiz
Sipariş Talebinde Bulunan Üyelerimiz

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Stored Procedure LIMIT Sorunu
#1
Stored Procedure 'e LIMIT neden parametre olarak geçilemez ?

Bu sorunu nasıl aşıyorsunuz ?
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#2
(03-08-2018, Saat: 18:01)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlStored Procedure 'e LIMIT neden parametre olarak geçilemez ?

Bu sorunu nasıl aşıyorsunuz ?
Anladığım kadarıyla 5.5.6 surumu sonrasina eklenmis.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Cevapla
#3
Evet ama 5.1de kullanabilmem lazımdı.

Tuğrul abi sağolsun güzel bir fikir verdi, yarın deneyip burada paylaşırım
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#4
@yhackup, paginasyon ile ilgili bir makale yayınlamıştım, orada paylaştığım örnek bu sorunu nasıl aşabileceğini içeren bir örnek barındırıyor...

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Peyami Safa: "Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır". 
Can Yücel: "Toprak gibi olmalısın! Ezildikçe sertleşmelisin! Seni ezenler sana muhtaç kalmalı! Hayatı sende bulmalı."
Cevapla
#5
(04-08-2018, Saat: 08:29)uparlayan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol@yhackup, paginasyon ile ilgili bir makale yayınlamıştım, orada paylaştığım örnek bu sorunu nasıl aşabileceğini içeren bir örnek barındırıyor...

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Bu yöntemi biliyorum fakat , Delphi içerisinden bu sqli çağırmak ile , sp'den çağırmak arasında fark yok. Bu kullanımda mysql kodu optimize edemeyecek büyük verilerde özellikle hız farkı doğuracaktır.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#6
(04-08-2018, Saat: 08:38)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(04-08-2018, Saat: 08:29)uparlayan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol@yhackup, paginasyon ile ilgili bir makale yayınlamıştım, orada paylaştığım örnek bu sorunu nasıl aşabileceğini içeren bir örnek barındırıyor...

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Bu yöntemi biliyorum fakat , Delphi içerisinden bu sqli çapırmak ile , sp'den çağırmak arasında fark yok. Bu kullanımda mysql kodu optimize edemeyecek büyük verilerde özellikle hız farkı doğuracaktır.

Tuğrul abinin verdiği fikri merak etmeye başladık...
Peyami Safa: "Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır". 
Can Yücel: "Toprak gibi olmalısın! Ezildikçe sertleşmelisin! Seni ezenler sana muhtaç kalmalı! Hayatı sende bulmalı."
Cevapla
#7
Senaryo şöyle , 

4 tabloya join atmamı gerektiren ve karmaşık where conditiona sahip uzunca bir scriptim var.

Bu kalabalık sqli delphi tarafında görmek istemiyorum ve Her seferinde sqli delphi tarafından çağırdığım için mysql de optimize edemiyor.

Yazdığım sql'in dinamik bir limiti var işlemci sayısı * 2  (her row için yeni bir Thread create ediliyor) , 

Fakat büyük müşterimizin sunucu işlemcisi şimdiye kadar 20 idi,  * 2 = 40 yapıyor. Ama paket uygulama olduğu için tek işlemcili olan bilgisayarda da çalışması gerekiyor.

Sp nimetlerinden de faydalanmak istiyorum , öncelikle tahmini maximum limit belirterek LIMIT 60 ile temporary table oluşturuyorum.
Select cümlemin başına bir sayaç atıyorum.

  (@row_number := @row_number + 1) AS NCount,

Sonra Temporary table'i çağırıyorum bu şekilde,
SELECT *FROM myQuery WHERE NCount <= $limiter;
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#8
volkan beyden daha farklı bir öneri aldım, başka intger veri dönen bir function ile hallettim.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#9
(04-08-2018, Saat: 13:56)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olvolkan beyden daha farklı bir öneri aldım, başka intger veri dönen bir function ile hallettim.

@yhackup  Sorununuzu çözmenize sevindim, nasıl çözüldüğüne dair bir kod örneği paylaşırsanız sanırım forumun diğer kullanıcıları da bundan faydalanabilir...
Peyami Safa: "Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır". 
Can Yücel: "Toprak gibi olmalısın! Ezildikçe sertleşmelisin! Seni ezenler sana muhtaç kalmalı! Hayatı sende bulmalı."
Cevapla

Konuyu Paylaş : facebook gplus twitter





Konuyu Okuyanlar: 1 Ziyaretçi