【发布时间】:2016-09-22 05:29:43
【问题描述】:
我在 sql server 2005 中有一个包含 6588395 条记录的客户表,我需要根据创建日期从客户表中检索记录。 我在创建日期创建了聚集索引。通过链接服务器,我正在从该表中检索记录。 我使用的查询是
@StartDate=N'01 Jan 2016',@EndDate=N'31 Mar 2016'
select
firstname,
lastname,
Address,
Addrss1,
city
from
[ABC\SQCENTRE].[Reports].[dbo].[tbl_Customer]
where
creation_date BETWEEN @startdate AND @EndDate
此查询需要 30 分钟来检索记录。你能建议如何优化查询吗?
我也尝试过 openquery,但这也没有任何区别。 Creation_date 是一个日期时间字段
任何帮助表示赞赏。
【问题讨论】:
-
查询直接在另一台服务器上运行有多快/多慢?你真的将日期保存为 nvarchar 吗?
-
@swe creationdate 是一个日期时间字段
-
尝试使用With(NOLOCK)
-
查询在远程服务器本地运行需要多长时间?查询返回多少条记录?需要确定问题是由于带宽还是查询优化造成的。既然你说 OPENQUERY 没有帮助,那么它就是其中之一。如果可以排除带宽,那就看远程服务器上的执行计划。
-
提供执行计划作为xml,涉及的表的架构和计数
标签: sql sql-server sql-server-2008