显示过去一周的数据(十亿行数据库)

时间:2012-10-03 13:47:37

标签: sql sql-server database

我正在使用ASP.NET创建一个Web应用程序。基本上,我需要显示来自SQL Server的数据,该SQL Server具有十亿行数据库。当我查询某些内容时,通常需要花费很多时间。例如,我使用此代码查询过去一周创建的数据:

DECLARE @CurrentDate as DateTime,
        @PastWeek as DateTime;

SET @CurrentDate = GETDATE();
SET @PastWeek = DATEADD(ww, -1, @CurrentDate);      

SELECT [ID]
      ,[TIMESTAMP]
      ,[USERNAME]
      ,[CLIENTNAME]
      ,[COMMAND]
      ,[PATH]
  FROM [P4D] WHERE TIMESTAMP BETWEEN @CurrentDate AND @PastWeek;

20分钟后仍在查询。我认为这需要很长时间,因为它测试每一行是否在时间范围内。

提取从pastweek创建的数据是错误的方法吗?或者有什么方法可以提高查询语句的效率吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

你需要的两件事:

SELECT ID 
      ,TIMESTAMP
      ,USERNAME 
      ,CLIENTNAME 
      ,COMMAND
      ,PATH
  FROM P4D (NOLOCK) WHERE TIMESTAMP BETWEEN @CurrentDate AND @PastWeek; 

(在你的查询中添加一个nolock)

使用TIMESTAMP添加非clustustred索引,并将选定的列(ID,USERNAME,CLIENTNAME,COMMAND,PATH)添加到此索引。