从ASP.NET执行Query时,抛出过期的异常

时间:2013-04-04 05:30:52

标签: asp.net sql

我的表包含1000000 值。 从那里我需要检索一些满足我条件的值。 但是当我从ASP.NET执行下面提到的查询时,它会抛出 TimeOut过期异常。 如何避免这个

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

如果我得到答案,那将非常有用。 提前致谢

4 个答案:

答案 0 :(得分:4)

听起来您需要在查询的where子句中为列添加索引。

check this out

this also

  • 并考虑存储过程
  • Coz存储过程将有助于在短时间内检索数据 来自DB的时间。
  • 始终避免在前端编写查询。

但首先也是最重要的是索引,如果你有更多数据意味着索引它。

答案 1 :(得分: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

答案 2 :(得分:1)

  1. WEB.CONFIG TIMEOUT选项很长时间

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

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

答案 3 :(得分:0)

试试这些,

  1. 正确指定SQL连接超时和命令超时。
  2. 在CardId上添加索引
  3. 首先选择TOP 100/1000记录,并在需要时尝试获取其余记录以提高查询性能