私はこのようなSQLクエリを持っています:
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
私は次のように.net4(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);
}
このクエリの実行は、.netよりもSQL ServerManagementStudioの方がはるかに高速です。.netからの行の反復は非常に遅いです。この内部結合が原因であると思うので(?)、結合を含まない他のクエリは.netでは非常に高速です。
.netからクエリのパフォーマンスを向上させることはできますか?このようなリーダーやsgの代わりにデータセットを使用していますか?
どうもありがとうございます!