SQL Server 2008在10 Mil记录表上选择性能 - 慢?

时间:2012-05-15 21:44:08

标签: sql-server performance select

我有一个包含1000万条记录的表,需要加载所有内存(缓存应用程序)。

表结构如下:

CREATE TABLE [TestTable] (
    [Id]        [int] IDENTITY(1,1) NOT NULL,
    [RefId1]    [int] NOT NULL,
    [RefId2]    [int] NOT NULL,
    [RefId3]    [int] NULL,
    [Credits]   [money] NOT NULL,
    CONSTRAINT [PK_Table] PRIMARY KEY CLUSTERED ( [Id] ),
    CONSTRAINT [UK_Table] UNIQUE NONCLUSTERED ([RefId1],[RefId2],[RefId3])
)

表大小约为:364080 KB(数据) - 341648 KB(索引)

使用简单的选择加载此数据量大约需要2分钟。

选择使用:

SELECT  Id, RefId1, Credits, RefId3
FROM    TestTable WITH (NOLOCK)

这是SQL Server的正常速度性能吗? 如何加快查询速度?

从缓存应用程序和SSMS测试了查询,结果几乎相同。

我在具有32 GB Ram和SSD Disk RAID的16核服务器上使用SQL Server 2008 R2 Std,没有其他应用程序或连接到SQL服务器。

从性能计数器中我可以看到没有队列/磁盘/ CPU使用,因为数据库完全在内存中。执行查询时,唯一可见的信息是SQL和SSMS之间的网络流量较慢,大约为6 MB / s。

所有测试都在本地机器上完成。

有关如何加快此问题或在何处寻找问题的任何建议?

1 个答案:

答案 0 :(得分:0)

我想这不是SQL服务器问题,它更多的是将大量数据从数据库传输到本地Windows交换文件/内存。为什么需要所有表,SQL服务器将确定在正常情况下哪些页面应保留在缓存中。