2016-04-07 13 views
0

100000 - 150000 civarında toplam kayıt sayısına sahip bir tablomuz var. Tüm kayıtları 10 ile 15 saniye içinde tüm sütunlarla almak istiyorum. Böyle bir şey var mı?WHERE ve JOIN olmadan select deyiminin performansını geliştirin

Görünümü veya geçici tabloyu kullanmayı denedim, ancak yüklenmesi 47 saniye sürüyor. Bu noktada soru çok muğlak olduğundan

DECLARE TABLE TABLE(Business varchar(1000), Practice varchar(1000), 
Location varchar(1000), ProviderName varchar(1000), 
InsuranceName varchar(200), CustName varchar(100), ChartNo varchar(200), 
ClaimId bigint, ClaimSubmissionDate varchar(100), DOS DateTime, 
Modifiers varchar(200), CPT varchar(200), CPTCat varchar(1000), 
Unit varchar(200), chargeamount int, chargepostingdetailid bigint) 
+3

Daha hızlı bir donanım edinin ... – jarlh

+0

Oh! Teşekkürler dostum! Ama Donanım dışında, herhangi bir olasılık var mı? 30 saniye mi? –

+0

Bize tablo tanımı, örnek tablo verileri vb. Göster. Büyük olasılıkla bir sürü veri aktarma sorunu olduğunu unutmayın - ki bu da hızlandırmak biraz zor. (Tampon boyutları vb. Şeyleri geliştirebilir.) – jarlh

cevap

0

Eh, .... I (şişe boyun veritabanı üzerinde DEĞİL olduğunu varsayarak) paralel sorguları sorgu bölmek öneririm. ConcurrentBag ile bağlantılı olan

kullanımlar Parallel.For.

Her "döngü", 5000 veya daha fazla örnek yükler, sayılarla "oynatın" ve herhangi bir fark olup olmadığına bakın.

+0

Cevabınız için teşekkürler. Parallelism'i kullanmak için sana katılıyorum. Ancak bu SQL Bildirimi SSRS Raporu için kullanmalıyım. Bu asıl sorun. Bütün bu verileri SSRS'ye transfer etmem gerektiğinden ve SSRS üzerinden sayfalama yapılacağından rapor alınacaktır. –

+0

Paralel dediğimde, 100000 ile 150000 arasındaki tüm girdileri yüklemek, ancak her bir sorgu yalnızca belirli bir miktarı yükler ve her sorgu sonucunu (paginated query gibi) son listeye ekler (concurrentBag). Her şey yüklendiğinde, FULL listesini tüketici nesnesine iletin. – Dryadwoods

0
  1. İstemcinizi sunucu makinesinde çalıştırın. SQL Server Management Studio'ya ihtiyacınız varsa veya uygulamanızı sunucuda çalıştırıyorsanız, RDP oturumunu kullanabilirsiniz.

  2. Veritabanı bağlantınızdaki ağ iletişim kuralı için paylaşılan belleği kullanın. Bakınız: Fastest SQL Server protocol?