Forum
Bildirimler
Hepsini Temizle
Yazılım Genel
2
Yazılar
2
Üyeler
0
Reactions
463
Görüntüleme
Konu başlatıcı
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;
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);
}
}
Gönderildi : 09/04/2013 03:25
Aradaki fark connectionstring'e yazılan ip ile alakalıdır genellikle.
Eğer uygulama ile sql server aynı makina üzerinde ise localhost veya .
yazılarak hız kazanabilirsiniz.
Bunun yanında inner join kullanmak
zorunda değil iseniz left join kullanın ve group by'daki cast işlemini
select'te yapmışsınız zaten. Group by'daki cast işlemi gereksizdir. Sadece
kolon isimlerini yazmanız kafi.
Gönderildi : 09/04/2013 17:47