逍遥一派 发表于 2015-1-16 22:39:37

MYSQL编程:Oracle中一时表的深切研讨

WindowsAzureSQLDatabase并不支持数据压缩和表分区之类的功能,而且SQLDatabase支持的Transact-SQL语言只是完整版的一部分。另外,因为解决方案提供商不能控制物理资源,所以他们不能将数据文件和索引分配给特定的硬件。oracle|一时表
比来思索到我们的数据库端写存储历程关于一时表利用的情形,因为我们



如今还不分明数据库端究竟是怎样处置的,是不是和SqlServer的处置体例相



同,是不是会存在隐患等等一些成绩,为了不未来不用要的贫苦我做了深



进的研讨和检察了一些威望的材料,如今和人人共享,但愿人人在处置



Oracle一时表是注重一下:



起首是创立一时表的语法:

CREATEGLOBALTEMPORARYTABLEtable

"("columndatatype[{NULL|NOTNULL}]

[,columndatatype[{NULL|NOTNULL}]...")"

ONCOMMIT{DELETE|PRESERVE}ROWS;





Oracle中的一时表有两种一种是事件级其余一时表它在事件停止的时分自



动清空纪录,另外一种是会话级的它在我们会见数据库是的一个会话停止后



主动的清空。关于一时表多用户并行不是成绩,一个会话历来不会制止另



一个会话利用一时表。即便“锁定”一时表,一个会话也不会制止其他会



话利用它们的一时表。



假如有在SQLSERVER和或sybase中利用一时表的履历,必要次要考



虑的不是实行selectx,y,zinto#tempfromsome_table来创立和装载一时



表,而是:



1.关于每个数据库,创立一切的temp表作为全局一时表。这将作



为使用程序安装的一部分完成,就像创立永世表一样。



2.只需在过程当中复杂的insertintotemp(x,y,z)selelctx,y,zfromsome_table。



只是了解这点,这里的目标不是运转存储历程创立表。在Oracle中如许做



不是准确的办法。DDL是一种损耗资本十分年夜的操纵,在运转时只管不要



利用,使用程序必要的一时表应在使用程序安装时创立,而不是在运转时



创立。Oracle中的一时表和其他数据库的一时表是类似的,在每一个数据库



中创立一时表一次,不用在数据库中的每一个存储过程当中创立一次。一时表



老是存在的,他们作为工具存在于数据字典中,而且老是坚持为空,直到



有会话在个中放进数据。



一切我在这里申明假如我们在存储过程当中建一时表,每次都创建一个那末



我的体系跟着用户的操纵挪用此存储历程,每次多一个如许的表,我们在



不知不觉中数据库中的表的数目会愈来愈多,而我们还不晓得会存在很年夜



的隐患的一切说这点不成藐视,为了我们的体系能在客户那边安稳、平安



的运转我们必定要注重如许的成绩。假如不手动Drop表,一时表仍是在数据字典中存在的。




DBaaS会导致单一客户利润率的下降,因为云服务一般是依靠MySQL学习教程数来抵消较低的利润率。

飘飘悠悠 发表于 2015-1-19 20:50:51

入门没那么困难,精通没那么容易

透明 发表于 2015-1-25 05:36:22

大侠们有推荐的书籍和学习方法写下吧。

小妖女 发表于 2015-2-2 14:58:34

如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。

逍遥一派 发表于 2015-2-7 23:12:21

现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.

若相依 发表于 2015-2-23 14:53:58

你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。

乐观 发表于 2015-3-7 09:27:25

发几份SQL课件,以飨阅者

冷月葬花魂 发表于 2015-3-14 18:10:57

理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识

变相怪杰 发表于 2015-3-21 13:27:39

你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
页: [1]
查看完整版本: MYSQL编程:Oracle中一时表的深切研讨