從我的SQL Server中檢索數據非常緩慢。有人看到問題嗎?使用C檢索數據時,SQL Server速度非常慢
創建SQL Server表:
using (SqlCommand cmd = connection.CreateCommand())
{
cmd.Parameters.AddWithValue("jaar", jaartal);
cmd.CommandText =
@"
BEGIN
CREATE TABLE " + jaartal + @"(
[code] [Varchar](max) NULL,
[type] [Varchar](max) NULL,
[datum] [datetime] NULL,
[uur] [Varchar](max) NULL,
[controller] [Varchar](max) NULL,
[fout] [Varchar](max) NULL,
[teller] [Varchar](max) NULL,
[omschrijving] [Varchar](max) NULL,
[graad] [Varchar](max) NULL,
[var1] [Varchar](max) NULL,
[var2] [Varchar](max) NULL,
[var3] [Varchar](max) NULL,
[var4] [Varchar](max) NULL,
[var5] [Varchar](max) NULL,
[var6] [Varchar](max) NULL,
[var7] [Varchar](max) NULL,
[var8] [Varchar](max) NULL,
[var9] [Varchar](max) NULL,
[var10] [Varchar](max) NULL,
[var11] [Varchar](max) NULL,
[var12] [Varchar](max) NULL,
[var13] [Varchar](max) NULL,
[var14] [Varchar](max) NULL,
[var15] [Varchar](max) NULL,
[var16] [Varchar](max) NULL,
[var17] [Varchar](max) NULL,
[var18] [Varchar](max) NULL,
[var19] [Varchar](max) NULL,
[var20] [Varchar](max) NULL,
[var21] [Varchar](max) NULL,
[var22] [Varchar](max) NULL,
[var23] [Varchar](max) NULL,
[var24] [Varchar](max) NULL,
[var25] [Varchar](max) NULL,
[var26] [Varchar](max) NULL,
[var27] [Varchar](max) NULL,
[var28] [Varchar](max) NULL,
[var29] [Varchar](max) NULL,
[var30] [Varchar](max) NULL,
[var31] [Varchar](max) NULL,
[var32] [Varchar](max) NULL,
[var33] [Varchar](max) NULL,
[var34] [Varchar](max) NULL,
[var35] [Varchar](max) NULL,
[var36] [Varchar](max) NULL,
[var37] [Varchar](max) NULL,
[var38] [Varchar](max) NULL,
[var39] [Varchar](max) NULL,
[var40] [Varchar](max) NULL,
[Cat_MMAP] [Varchar](max) NULL
); END";
try
{
cmd.ExecuteNonQuery();
}
catch
{
}
}
connection.Close();
從SQL Server檢索數據:
我有一個表,所以每年我必須看所有這些表。
但我在所有的數據庫中有1000 000行。
Tbl_events.Columns.Clear();
aantalfouten = 0; //numbers of error
jaartaltabel = DataContainer.jaartalstart;
statusbalk.Value=statusbalk.Minimum;
while (aantalfouten < 40)
{
try
{
statusbalk.Visible = true;
tabelnaam = "Evenementen" + jaartaltabel.ToString(); //create name of the table that i want to read so as Events2013
connection.Open();
datatabel.Load(new SqlCommand("SELECT type,datum,uur,controller,fout,teller,omschrijving,graad,var1,var2,var3,var4,var5,var6,var7,var8,var9,var10,var11,var12,var13,var14,var15,var16,var17,var18,var19,var20,var21,var22,var23,var24,var25,var26,var27,var28,var29,var30,var31,var32,var33,var34,var35,Cat_MMAP FROM " + tabelnaam + " where " + filter + "", connection).ExecuteReader());//Select statement
connection.Close();
Tbl_events.DataSource = datatabel.DefaultView; //insert the data in my datagridview this takes also a lot of time
jaartaltabel++;
}
catch
{
jaartaltabel++;
aantalfouten++;
connection.Close();
}
}
ColumnWidth();
我也使用過濾器與where語句不接收所有數據。
有時我也有系統內存異常。
有沒有人有這些問題的解決方案?
你做錯了。 –
然後我錯了什麼?我在catch事件中增加了aantalfouten。當tabelname沒有被激怒時,他會去捕捉。這會給出錯誤,我會增加錯誤的數量 – user2282583
這裏有很多可能性。我會做的第一件事是嘗試確定緩慢發生在sql還是C#端。你可以直接在數據庫上運行你的查詢(即不是通過C#),看看它需要多長時間,以及實際的執行計劃產生了什麼? – Johnv2020