SQL Server Management Studioから実行すると正常に実行されることがわかっているクエリをロードするasp.netページがありますが、SQLCommandでASP.NETから実行すると、クエリにかなり長い時間がかかります。問題が発生してから1行がクエリに追加された以外に何が起こっているのかを理解しているようですが、問題が何であるかを特定できません。
追加された問題のあるコード行は6行目です。bi.INGR_CODE != 0
SQLステートメント
SELECT bh.JOB_NUMBER, j.DESCRIPTION, SUM(bi.INGR_ACTUAL) AS TOTAL
FROM BATCH_HEADER AS bh LEFT OUTER JOIN
BATCH_INGR AS bi
ON bh.BATCH_ID = bi.BATCH_ID AND
bh.FACTORY = bi.FACTORY AND
bi.INGR_CODE <> 0 LEFT OUTER JOIN
ServerNameReplaced.man_prod.dbo.JOBS AS j
ON bh.JOB_NUMBER = j.JOB_NUMBER COLLATE database_default AND
bh.FACTORY = j.FACTORY COLLATE database_default
WHERE ( bh.FACTORY = @Factory ) AND
( bh.DATETIME_DUMP >= @StartDate ) AND
( bh.DATETIME_DUMP < @EndDate )
GROUP BY bh.JOB_NUMBER, j.DESCRIPTION
ORDER BY bh.JOB_NUMBER
ファイルの背後にあるASP.NETコード
//Temporary List
List<BatchItem> data = new List<BatchItem>();
string SQLCommand = DBHelper.LoadSQLStatement( "batchdescription.sql" );
System.Data.SqlClient.SqlConnection sqlConnection = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringNameReplaced"].ConnectionString);
System.Data.SqlClient.SqlCommand sqlCommand = new System.Data.SqlClient.SqlCommand(SQLCommand, sqlConnection );
try
{
sqlCommand.Parameters.Add( "@StartDate", System.Data.SqlDbType.DateTime ).Value = StartDate;
sqlCommand.Parameters.Add( "@EndDate ", System.Data.SqlDbType.DateTime ).Value = EndDate;
sqlCommand.Parameters.Add( "@Factory", System.Data.SqlDbType.VarChar, 2 ).Value = Factory;
sqlConnection.Open();
SqlDataReader DataReader = sqlCommand.ExecuteReader();
while ( DataReader.Read() )
{
data.Add(
new BatchItem()
{
JobNumber = DataReader[0].ToString(),
Description = DataReader[1].ToString(),
Total = decimal.Parse( DataReader[2].ToString() )
} );
}
}
catch ( Exception ex )
{
//handle exceptions
}
finally
{
sqlConnection.Close();
}