VB6'da bir ADO kayıt kümesini doldururken bir sorunla karşılaşıyorum. Sorgu (SQLServer 2008'e isabet), yalnızca SSMS kullanarak çalıştırdığımda çalıştırmak için yaklaşık 1 saniye sürer. Sonuç kümesi küçük olduğunda iyi çalışır, ancak birkaç yüz kayıt olduğunda, uzun bir zaman alır. 800+ kayıtların geri yüklenmesi yaklaşık 5 dakika sürer (sorgu SSMS'de sadece 1 saniye sürer) ve 6000+ 20 dakikadan fazla zaman alır. Komut zaman aşımını arttırarak istisnayı "düzelttim", ancak daha fazla zaman gerektiren gerçek sorgu gibi görünmediğinden daha hızlı çalışmanın bir yolu olup olmadığını merak ediyordum. Sonuçları sıkıştırmak gibi bir şey bu kadar uzun sürmez. Kayıt kümesi aşağıdaki gibi açılır: Bir birleşik kutuyu doldurmak için kullanılan 3 sütunu döndürür. Veriler birleşik kutuyu doldurmak için kullanılan 3 sütunu döndürür.VB6'da bir ADO zaman aşımı sorununu çözme
GÜNCELLEME: SQL Profiler'ı çalıştırdım ve istemci makinesindeki örnekler daha fazla okuma yapıyor ve SSMS'deki sorgular için her iki metriğe göre 100 kat daha fazla zaman alıyor. Sorgunun metni hem SSMS hem de istemci makine için profiler'e göre aynıdır, bu yüzden farklı bir yürütme planı kullanması gerektiğini düşünmüyorum. Ağ kütüphanesi veya Sağlayıcı bunun üzerinde herhangi bir etkiye sahip olabilir mi?
Profiler istatistikleri: istemci uygulamadan
- : 7041720 59458 ms süre, 3900 satır sayımları SSMS itibaren
- , okur: 30802 okur 238 ms süresi, 3900 satır
Farklı bir yürütme planı kullanıyor gibi görünüyor, ancak sorgu tam olarak aynı ve istemcinin farklı fr kullanıyorsa, yürütme planını nasıl kontrol edeceğimi bilmiyorum om SSMS'de neyin gösterildiğini.
"Veri için Şifreleme Kullan" ı kaldırmayı denediniz mi? – Andomar
Hayır, ancak bu gerçekten uygun bir seçenek değil. Bu bir istemci uygulamasıdır. –
Aramaları profillemeyi denediniz mi ve [yürütme planlarına bakmak] (http://stackoverflow.com/questions/3831644/why-does-a-database-query-only-go-slow-in-the-application/ 3831685 # 3831685) Bunu doğrulamak kesinlikle bir parametre koklama sorunu değil mi? –