愤怒的大鸟 发表于 2015-1-16 14:07:10

将存储历程前往了局拔出到表中示例

有了rowbase的binlog后,我们来分析一下怎么实现闪回。平时的DML无非三种操作,增删改,先说三种操作的日志格式。我们常常在一个存储过程当中前往一个经由一系列庞大盘算后的了局集。由于这个了局集不是单靠查询语句就可以弄定,以是不必复杂的利用视图,只能靠存储历程了。但如许就会存在一个成绩,假如我在失掉这个了局集后想再对这个了局会合的数据举行过滤,就不太好办了。但假如我们能先将这个了局集拔出到一个一时表中,然后利用复杂的where前提对这个一时表举行过滤,就变的相称的复杂了。

上面我们就做一个将存储历程的了局集拔出到表中做一个示例
sqlserver中新增数据的办法能够参考以下:SqlServer中拔出和增加数据的办法总结

先创立一个复杂的存储历程,前往一个了局集
Createprocedureusp_test
as
begin
setnocounton

selectaasA,2asB,3asC
unionall
selectc,2,3
unionall
selectd,2,3
unionall
selecte,2,3

setnocountoff

end

这个存储历程前往了一个具有四行数据的了局集,我们可使用executeusp_test命令来检察了局集。

然后我们创立一个一时表,并将该了局集拔出到这个一时表中
createtable#temp_test
(
Avarchar(50),
Bint,
Cint
)

insertinto#temp_test(A,B,C)
executeusp_test

如许,一时表#temp_test就具有存储历程usp_test的了局集了,假如我们要对了局集过滤,就只需利用复杂的where前提了,好比,我们要查询了局会合A列即是a的了局,sql命令以下:
select*from#temp_testwhereA=a
限制,如果WHERE子句的查询条件里有不等号(WHEREcoloum!=),MySQL将无法使用索引。类似地,如果WHERE子句的查询条件里使用了函数(WHEREDAY(column)=),MySQL也将无法使用索引。

仓酷云 发表于 2015-1-18 12:01:36

然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情

不帅 发表于 2015-1-26 15:25:27

sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西

老尸 发表于 2015-2-4 20:37:18

我个人认为就是孜孜不懈的学习

简单生活 发表于 2015-2-10 09:13:58

然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情

乐观 发表于 2015-3-1 08:56:10

分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。

海妖 发表于 2015-3-10 15:16:42

多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。

深爱那片海 发表于 2015-3-17 08:50:26

比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。

活着的死人 发表于 2015-3-24 04:39:19

分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。
页: [1]
查看完整版本: 将存储历程前往了局拔出到表中示例