mysql视图

创建视图时,ALGORITHM可取三个值:MERGE、TEMPTABLE或UNDEFINED。如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。算法会影响MySQL处理视图的方式。


(1)对于MERGE,会将引用视图的语句的文本与视图定义合并起来 ,使得视图定义的某一部分取代语句的对应部分。
(2)对于TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。
(3)对于UNDEFINED,MySQL将选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。

 

明确选择TEMPTABLE的1个原因 在于,创建临时表之后、并在完成语句处理之前,能够释放基表上的锁定。与MERGE算法相比,锁定释放的速度更快 ,这样,使用视图的其他客户端不会被屏蔽过长时间。

 

MERGE算法要求视图中的行和基表中的行具有一对一的关系。其将引用视图的语句的文本与视图定义合并起来。
如果不具有该关系,必须使用临时表取而代之。比如:使用了group by、distinct的创建视图的语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值