我在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是一个日期时间字段
任何帮助表示感谢。
答案 0 :(得分:1)
因此,如果createdate是datetime,则将vars设置为datetime值而不是varchar ...
<button ng-click="addParameter()"></button>
SQLServer会将表中的值与比较值进行比较。因此我不知道他是否会将您的搜索值投射到日期时间或将700万个日期时间投射到varchar进行比较。所以这就是为什么我肯定会将我的搜索表达式放到datetime以确保,服务器不会向varchar投射700万个日期值。
RAM或tempdb中的700万个演员可以解释为什么openquery(肯定是where子句的本地评估)需要30分钟。 如果我们有执行计划,这将更容易说明。