我有一个包含 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 磁盘 RAID 的 16 核服务器上使用 SQL Server 2008 R2 Std,没有其他应用程序或与 SQL 服务器的连接。
从性能计数器中,我可以看到没有队列/磁盘/cpu 使用,因为数据库完全在内存中。执行查询时,唯一可见的信息是 SQL 和 SSMS 之间大约 6 MB/s 的缓慢网络流量。
所有测试均在本地机器上完成。
关于如何加快速度或在哪里寻找问题的任何建议?