1

現在、特定のアカウントのテーブルの最後の行を返す非常に単純なクエリがあります。

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"

テーブルは非常に大きい (数百万行) ですが、パラメーターのないクエリはほぼ瞬時に実行されます。

アドバイスをいただければ幸いです

4

0 に答える 0