時,如果我有表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只有一個。 –