Sql 为什么更改值时查询会花费很长时间

Sql 为什么更改值时查询会花费很长时间,sql,sql-server,database,performance,sql-server-2012,Sql,Sql Server,Database,Performance,Sql Server 2012,如果我有具有以下结构的表任务: emp_num int P.K from_date datetime P.K to_date datetime P.K mission_location varchar(200) mission_desc varchar(200) req_ser int P.K r

如果我有具有以下结构的表
任务

emp_num              int             P.K
from_date            datetime        P.K
to_date              datetime        P.K
mission_location     varchar(200) 
mission_desc         varchar(200)
req_ser              int             P.K
req_year             int             P.K


当我尝试运行此查询时:

select *
from mission where emp_num =5307
它的工作速度非常快,但是当我尝试用另一个值运行同一个查询时,它会花费很长时间

select *
from mission where emp_num =4595
请试试这个-

select  *
from    mission with (forceseek)
where   emp_num = 4595

检查执行计划是否可能是参数嗅探。第二个查询可能仍然使用旧的执行计划。试着运行这个
select*从emp_num=4595的任务选项(重新编译)可能您运行了第一个查询,结果存在于缓存中(而新查询不存在)。可能employe 4595在表中有无数行,employee 5307只有一行。@AnyName不关心表有多大(行数和大小)?请运行[code>exec sp_spaceused'dbo.[mission]”
该表非常小,我们可以在[dbo].[mission]上运行此
ALTER INDEX[pkc_mission]。[mission]REBUILD
-这将重建索引和统计信息。然后再次执行您的查询。为什么使用(forceseek)?首先让我们看看使用索引是否提高了性能,如果是,我们可以继续调查为什么不使用索引。只有在我知道我的统计数据最新时,我才会建议使用(forceseek)date@Prdp这里没有争议。仅供调查之用。
select  *
from    mission with (forceseek)
where   emp_num = 4595