在执行ASP.NET查询时,抛出超时异常。

4

我有一个包含1000000个值的表格。 我需要检索符合我的条件的一些值。 但是当我从ASP.NET执行下面提到的查询时,它会抛出超时异常。 怎样避免这种情况

"SELECT ID,Intime,OutTime from [dbo].MasterLog 
WHERE CardId=(SELECT ID from User WHERE Name like 'ki%')"

如果我得到答案,这将非常有用。

提前感谢。

4个回答

4
听起来你需要在查询的where子句中的列上添加索引。 看这里 还有这个 同时要考虑存储过程,因为存储过程将有助于从数据库中快速检索数据。
始终避免在前端编写查询。
但首要和最重要的事情是索引,如果您拥有更多的数据,则对其进行索引。

2
除了更新连接和命令超时时间外,如果您在CardID上添加一个非集群索引,并包含列ID、Intime、OutTime,则这是一个覆盖索引,可以使您的查询更快,从而有所帮助。

CREATE NONCLUSTERED INDEX [IX_NCI_MasterLog_CardID] ON [dbo].[MasterLog]
(
    [CardID] ASC
)
INCLUDE (   [ID],
            [InTime],
            [OutTime[) 
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

1
  1. WEB.CONFIG TIMEOUT选项时间过长。

  2. IIS应用程序池TIMEOUT选项时间过长。

  3. (当前页面)Request Header KeepAlive = true设置。


0

试试这些方法:

  1. 适当指定SQL连接超时时间和命令超时时间。
  2. 在CardId列上添加索引。
  3. 首先选择前100/1000条记录,然后根据需要获取其余记录以提高查询性能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接