我使用以下代码作为程序中的第一个数据库调用,查询包含每日股票价格信息的本地SQL数据库表:
public DateTime Read_DailyData_FirstDate(String Symbol)
{
using (EquitiesDataContext db = new EquitiesDataContext()) {
var q =
(from c in db.DailyDatas
where (c.Symbol == Symbol)
orderby c.Date ascending
select c.Date).FirstOrDefault();
return q;
}
}
它给了我一些符号的"Timeout expired"
错误(大约2%的符号)。在SQL Server Mgmt Studio中手动运行等效的Top 1查询几乎是即时的
(SELECT top 1 [Date] FROM [Equities].[dbo].[DailyData] where Symbol = 'X' order by Date).
我已经验证了DB数据本身没有明显的错误(所有列都禁止设计空值,每个符号内没有重复日期等),并且所讨论的符号远远不同于最悠久的历史。
我最初使用.First()而不是.FirstOrDefault(),但是当我看到后者被建议用于相关主题时切换。 .First()
也会出现同样的错误