現在、特定のアカウントのテーブルの最後の行を返す非常に単純なクエリがあります。
SELECT TOP 1 * FROM tbl WHERE AccountID = @AccountID ORDER BY tblID DESC;
DataTable
パラメータを使用してこのクエリをfrom に入力するDataAdapter
と、そのアカウントのテーブルにデータがない場合にタイムアウトになります。テーブルにデータがある場合、正常に実行されます。
SqlCommand cmd = new SqlCommand(con);
cmd.commandText = "SELECT TOP 1 * FROM tbl WHERE AccountID = @AccountID ORDER BY tblID DESC"
cmd.Parameters.Add(new SqlParamter("@AccountID", 123));
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt); // TIMES OUT
パラメータを使用しないようにクエリを変更すると、問題なく実行されます。
"SELECT TOP 1 * FROM tbl WHERE AccountID = 123 ORDER BY tblID DESC"
テーブルは非常に大きい (数百万行) ですが、パラメーターのないクエリはほぼ瞬時に実行されます。
アドバイスをいただければ幸いです