我有一個函數從一個SQL數據庫表(「html」)中檢索相對較短的文本字符串的程序,在其上運行一些正則表達式查詢,然後將輸出存儲在另一個數據庫表(「配置文件」)中。 「Html」有大約800萬條記錄,「檔案」只存儲結果。它目前非常慢 - 在快速服務器上每個記錄超過1秒。我希望有人也許能夠指出一些明顯的是,我將能夠修復:使用兩個數據庫表提高查詢/處理RegExp函數的速度
dataComm dc = new dataComm(@"SERVER1", "html");
dataComm dc_bp = new dataComm(@"SERVER1", "profiles");
Int32 numinserted = 0;
for (int selectc = 0; selectc < 85000; selectc++)
{
DataTable dt = dc.fetchData("SELECT top 100 * from html where processed=0");
label3.Text = "Iteration " + selectc + " of 85,000";
string sq="";
string squpdate = "";
Int32 thisid=0;
for (int i = 0; i < dt.Rows.Count; i++)
{
// CODE THAT RUNS THE REGULAR EXPRESSIONS.
thisid = Convert.ToInt32(dt.Rows[i]["ID"]);
sq += @"INSERT INTO profiles (field1, field2, [etc.]) VALUES ('value1','value2', [etc.]); ";
numinserted++;
squpdate += "UPDATE html SET processed=1 WHERE ID=" + thisid.ToString() + "; ";
}
dc.executeNonQuery(squpdate);
}
什麼版本的SQL? – Brad 2010-10-28 00:58:26
您是否知道例程各部分的相對時間:即RegExp調用,INSERT執行(缺少?)還是UPDATE調用? – richaux 2010-10-28 07:46:58