緩慢讀者迭代我有一個SQL查詢是這樣的:像這樣數據庫查詢性能:在.NET
set @fromdate = '2012/01/01 00:00:00'
set @todate = '2013/01/01 00:00:00'
SELECT TableOne.date_time, TableTwo.*
FROM TableOne
INNER JOIN TableTwo ON TableOne.gprs_id = TableTwo.recordid
WHERE date_time >= @fromdate AND date_time <= @todate
我用它在.NET 4.0(C#):
string strSQL = "SELECT TableOne.date_time, TableTwo.* FROM TableOne INNER JOIN TableTwo ON " +
"TableOne.gprs_id = TableTwo.recordid where date_time >= @fromdate AND date_time <= @todate";
var pCommand = pConnectionWrapper.DBConnection.CreateCommand();
pCommand.CommandText = strSQL;
var paramFromDate = pCommand.CreateParameter();
paramFromDate.ParameterName = "@fromdate";
paramFromDate.DbType = DbType.DateTime;
paramFromDate.SourceColumn = "date_time";
paramFromDate.Value = fromDate;
pCommand.Parameters.Add(paramFromDate);
var paramToDate = pCommand.CreateParameter();
paramToDate.ParameterName = "@todate";
paramToDate.DbType = DbType.DateTime;
paramToDate.SourceColumn = "date_time";
paramToDate.Value = toDate;
pCommand.Parameters.Add(paramToDate);
var pReader = pCommand.ExecuteReader();
while (pReader.Read())
{
var someValue = double.Parse(pReader["somevalue"].ToString());
var date = DateTime.Parse(pReader["date_time"].ToString());
var someObject = new someObject(someValue, someDate);
someObjects.Add(comeObject);
}
運行此SQL Server Management Studio中的查詢比.net更快。 .net中遍歷行的速度非常緩慢。因爲我認爲這個內部連接導致這個(?),因爲我的其他查詢不包含連接在.net下非常快。
我可以通過.net提高查詢性能嗎?使用數據集而不是閱讀器或SG這樣的?
非常感謝!
這顯然不是你真正的代碼,在最後的while循環中......你能給我們你真正的代碼嗎?你在循環中做什麼?應該沒有理由由於聯接而導致速度變慢 - 這不像聯接在本地執行。 –
你應該[獲得一個執行計劃](http://stackoverflow.com/questions/7359702/how-do-i-obtain-a-query-execution-plan)兩種情況下(運行通過SQL Server Management Studio&通過.Net代碼)並比較兩者。 – Justin
我在閱讀中添加了代碼。基於DB數據的某些對象初始化沒有什麼特別 – Tom