时间: 2021-08-13 作者:daque
不日为一家企业开拓数据库上面的运用。有两张数据表:a和b,个中a的记载为2万条安排,而b中的数据为200万条之上,此刻诉求以a.id=b.id为关系举行数据挑选。 为此诉求,我做了个视图view1,将a.id与b.id关系起来,运转该视图的查问,运用了2秒中就获得截止了。这时候又有一特出需要:编写保存进程,该保存进程中有一个游目标轮回,该轮回反复1万次,在历次轮回中都运用了对view1的查问,举比方下: 轮回游标体(反复1万次) { select @text=text from view1 where id=@ id --个中@text,@id均为变量 update form1 set text=@text where id=@id } 实行之上的保存进程,创造果然要耗费>7秒钟的演算功夫,举行领会后得悉功效全耗费在对view1视图的扫描上,纵然独立对该视图举行查问只需2秒,但在这种情景下即须要太多的功夫。 所以矫正该保存进程如次: create table #temptab ( id nvarchar(20), text nvarchar(20) ) 查问view1视图,将记载插入到#temptab偶尔表中... 轮回游标体(反复1万次) { select @text=text from #temptab where id=@ id --个中@text,@id均为变量 update form1 set text=@text where id=@id } 别小瞧之上的变换,此时该保存进程只耗费50秒的功夫。 对于上述局面,领会如次:在屡次轮回对某个视图举行查问时,将会奢侈洪量的功夫,所以将该视图的数据放在外存中举行计划会大普及速率。