Koineks
  • 09-04-2013, 00:33:15
    #1
    1/2
    Merhabalar,

    Yazdığım bir uygulamalada kullandığım sql sorgu cümleciği çok uzun süreler sonunda sonuçları getiriyor. Halbu ki aynı sorguyu sql management studio da çalıştırdığımda ise saniyeler içerisinde neticeyi alabliiyorum. Her ne hikmetse sadece group by kullandğım sorgularda bunu yapıyor, onun haricindeki tüm sorgularım tıkır tıkır çalışıyor.

    Acaba sorun neyden kaynaklanıyor?

    Kullandığım connecting string parametrem;

    HTML-Kodu:
    string baglantiParametresi = "Data Source=10.6.150.147;Initial Catalog=Lokal_Data;User ID=LocalUser;Password=123456;";
    Kod;

    private void Index_Raporlama()
            {
                try
                {
                    DateTime dt1 = Convert.ToDateTime(dateTimePicker7.Value.ToString());
                    String sdate = dt1.ToString("yyyy-MM-dd 00:00:00");
    
                    DateTime dt2 = Convert.ToDateTime(dateTimePicker8.Value.ToString());
                    String edate = dt2.ToString("yyyy-MM-dd 23:00:00");
    
                    tablo15.Clear();
    
                    baglanti.ConnectionString = baglantiParametresi;                
                    baglanti.Open();                
                    
                    komut15.Connection = baglanti;
    
                    string t15Sorgu1 = " SELECT CAST(abl.UpdateDate AS DATE),u.Name+' '+u.LastName,t.DocumentTypeName,COUNT(DISTINCT ab.tArchiveBasketId),COUNT(DISTINCT abd.tArchiveDocumentId),'INDEX' ";
                    string t15Sorgu2 = " FROM tArchiveBasket AS ab  with(nolock) ";
                    string t15Sorgu3 = "  ";
                    string t15Sorgu4 = " INNER JOIN tArchiveBasketStatusLog AS abl  with(nolock) on ab.tArchiveBasketId = abl.tArchiveBasketId ";
                    string t15Sorgu5 = " INNER JOIN tArchiveDocument AS abd  with(nolock) ON abl.tArchiveBasketId = abd.tArchiveBasketId ";
                    string t15Sorgu6 = " INNER JOIN dbo.tArchiveDocumentType AS t ON abd.tArchiveDocumentTypeId = t.tArchiveDocumentTypeId ";
                    string t15Sorgu7 = " INNER JOIN dbo.tArchiveUser AS u ON abl.tUserId = u.tArchiveUserId ";
                    string t15Sorgu8 = "  ";
                    string t15Sorgu9 = " WHERE ISNULL(abd.Deleted,0)=0 AND (abl.UpdateDate BETWEEN " + " '" + sdate + "' " + " AND " + " '" + edate + "' ) AND ";
                    string t15Sorgu10 = " abl.CurrentBasketStateId=0 AND abl.NextState=1 ";
                    string t15Sorgu11 = "  ";
                    string t15Sorgu12 = " GROUP BY CAST(abl.UpdateDate AS DATE),u.Name+' '+u.LastName,t.DocumentTypeName ";
                    string t15Sorgu13 = "  ";
                    string t15Sorgu14 = "  ";
    
    
                    string SQL15 = t15Sorgu1 + t15Sorgu2 + t15Sorgu3 + t15Sorgu4 + t15Sorgu5 + t15Sorgu6 + t15Sorgu7 + t15Sorgu8 + t15Sorgu9 + t15Sorgu10 + t15Sorgu11 + t15Sorgu12 + t15Sorgu13 + t15Sorgu14;
                    
                    komut15.CommandText = SQL15;
                    adaptor15.SelectCommand = komut15;              
                    adaptor15.Fill(tablo15);
    
                    Raporlama_Bolumu_Listview();
    
                    for (int j = 0; j < tablo15.Rows.Count; j++)
                    {
                        listView8.Items.Add(tablo15.Rows[j].ItemArray[0].ToString());
                        listView8.Items[j].SubItems.Add(tablo15.Rows[j].ItemArray[1].ToString());
                        listView8.Items[j].SubItems.Add(tablo15.Rows[j].ItemArray[2].ToString());
                        listView8.Items[j].SubItems.Add(tablo15.Rows[j].ItemArray[3].ToString());
                        listView8.Items[j].SubItems.Add(tablo15.Rows[j].ItemArray[4].ToString());
                        listView8.Items[j].SubItems.Add(tablo15.Rows[j].ItemArray[5].ToString());                   
    
                        listView8.Items[j].BackColor = System.Drawing.Color.Red;
                    }
    
                    baglanti.Close();
    
                    Kayit_Adeti7();
    
                }
                catch (Exception hata)
                {
                    MessageBox.Show(hata.ToString(), "Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
    
            }
    Amatör Müzikler
  • Sponsor Reklam
  • 09-04-2013, 00:50:44
    #2
    1/2
    gözüme takılan group by da yapılan cast işlemi.. onu kaldırıp dener misiniz performansta nasıl bi değişiklik olacak?

    ayrıca sql serverdaki performansı ile ado.net teknolojisini karşılaştırmamak lazım.. daha hızlı bir şey bakıyorsanız no sql e yönelebilirsiniz..
    Lütfen özel mesaj atmak yerine sorularınızı forum üzerinden sorun.
  • 11-04-2013, 15:35:39
    #3
    1/2
    SQL Server'da execution plan kontrolü yaptın mı ? ve sanırım sorguyu biraz daha düzenleyebilirsin