我正在使用 asp.net MVC4 项目并使用 SQL Server 2008。我的数据库表包含 100000 行。此外,连接字符串属性的最大池大小设置为 1000000,池设置为 true。
我的表结构如下:
CREATE TABLE tblNews
(
ID int IDENTITY(1,1) NOT NULL,
Url nvarchar(300) UNIQUE NOT NULL,
PubDate datetime NOT NULL,
Active bit NOT NULL,
Hit int NOT NULL,
...
)
并且有一个索引如下:
CREATE NONCLUSTERED INDEX indexTblNews_Url
ON tblNews(Url)
我的选择查询是:
CREATE PROC spNewsGet
@Url nvarchar(300)
AS
UPDATE tblNews
SET Hit = Hit + 1
WHERE Url = @Url
AND PubDate > GETDATE()
AND Active = 1;
SELECT
*
FROM tblNews
WHERE Url = @Url
AND PubDate > GETDATE()
AND Active = 1
ORDER BY PubDate DESC
在低评级的网站上没有问题,而且效果很好。但是在像 100000 行这样大的数据库和每天有 2000000 个单用户的网站中,它会崩溃。SqlTimeout
它在三个页面之一引发异常。因此,当我单击一个页面时,几乎所有页面都给出了上述异常。
我检查了硬件性能,处理器消耗为 I7 3.6 GHZ 的 %70,内存消耗为 1.5 GB。但是有更多的空内存。我该如何克服这个问题?
任何帮助将不胜感激。