我们有一个使用 SQL Server 数据库的 WCF 服务。当服务启动时,它会将数据库中的数据加载到内存中。当我们使用 SQL Server 2000 时,加载并上线需要 1 分钟,但使用 SQL Server 2008 R2 时,完成相同任务需要 8 分钟以上。
我们从数据库加载了一个巨大的表。当我们检查 SQL Profiler 时,从该表中检索数据需要更多时间。
我们是否必须更改 SQL Server 2008 中的任何设置以实现更快的数据检索,或者我们是否必须更改连接字符串或其他任何地方的 WCF 服务?
数据库不是从 2000 年到 2008 年的升级版本。它是在 2008 年创建的,并用它进行了测试。
确切的查询是
SELECT a.Col1,
IsNull(a.Col2, '') Col2,
IsNull(a.Col3, '') Col3,
IsNull(a.Col4, '') Col4,
IsNull(a.Col5, '') Col5,
IsNull(b.Col2, '') bCol2
FROM Table1 a
LEFT OUTER JOIN Table2 b
ON LTrim(RTrim(IsNull(a.Col5, ''))) = LTrim(RTrim(IsNull(b.Col1, '')))
ORDER BY a.Col1
我注意到,与没有“Order by”相比,使用“Order by”子句需要更多时间,需要 4 秒。所以,我在 Table1.Col1 上添加了一个聚集索引来查看任何变化,仍然需要大约 8 分钟的时间
系统详细信息:Windows 7 32bit、Corei5、3GB 内存
SQL 2008 版本详细信息:Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (Intel X86) Apr 22 2011 11:57:00 版权所有 (c) Microsoft Corporation Developer Edition on Windows NT 6.1 (Build 7601: Service Pack 1)
请有人帮助我们解决这个问题。