我有一个储存程序,利用共同的表格表达方式,形成一种等级的 path子(因此,它能够展示出像父母Menu->Sub Menu-> Sub Menu->......)
对于我想要利用这一信息来说,它发挥了巨大作用,问题在于将我从休庭的智囊团获得的信息纳入我真正想要的信息。 我从我的数据中向国家情报和安全局做一个内部的Join,并走出了等级线。 对于那些返回约300个牢房的人,所储存的程序平均为15-20秒。
当我把考试和测验的结果列入一个温度表并在此基础上加入时,这一程序就算不到第二个。
我很想知道,为什么要这么长的时间才加入专门委员会,或者如果我以某种方式误用了专门委员会。
** 这主要是储存程序。
With Hierarchical_Path (Menu_ID, Parent_ID, Path)
As
(
Select
EM.Menu_Id, Parent_ID,
Convert(varchar(max),
EM.Description) as Path
From
Menu EM
Where
--EM.Topic_No is null
EM.Parent_ID = 0 and EM.Disabled = 0
Union All
Select
EM.Menu_ID,
EM.Parent_ID,
Convert(Varchar(max),E.Path + -> + EM.Description) as Path
From
Menu EM
Inner Join
Hierarchical_Path E
On
EM.Parent_ID = E.Menu_ID
)
SELECT distinct
EM.Description
,EMS.Path
FROM
dbo.Menu em
INNER JOIN
Hierarchical_Path EMS
ON
EMS.Menu_ID = em.Menu_Id
2 more INNER JOINs
2 Left Joins
WHERE Clause
当我接受这样的询问(参加考试委员会)时,表现在20秒左右。
When I insert the CTE results into a temp table, and join onto that, the performance is instantaneous.
更不用说,似乎在条款的哪里上 h。 我认为,我的问题更何在于何时才开始计算并储存在记忆中? 我的假设是,它一劳永逸,然后在记忆中 stick,但在某些情况下,它可能被称为“ mu”。