时,如果我有表Mission
查询需要永远:为什么用下面的结构改变价值
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
CONSTRAINT [pkc_mission] PRIMARY KEY CLUSTERED
(
[emp_num] ASC,
[from_date] ASC,
[to_date] ASC,
[ req_ser] ASC,
[ req_year] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
当我尝试运行此查询:
select *
from mission where emp_num =5307
它的工作速度非常快,但是当我尝试运行相同的q用另一种价值观念,它需要永远!
select *
from mission where emp_num =4595
检查执行计划可能是参数嗅探。第二个查询可能仍然使用旧的执行计划。尝试运行这个'select * from emp_num = 4595选项(RECOMPILE);' –
可能你运行了第一个查询并且结果存在于缓存中(而新的查询不存在)。 – Dekel
也许workers 4595在表中有数十亿行,而员工5307只有一个。 –