View元件可以提供更方便的资料查询与维护方式,在你建立View元件的时候,除了指定的查询叙述要符合规定,还可以指定资料库执行View元件时所使用的「演算法、algorithm」:
一般来说,你不需要特别指定View元件使用的演算法。如果在建立View元件的时候,没有指定使用的演算法为「MERGE」或「TEMPTABLE」,MySQL会设定为「UNDEFINED」,这个设定表示MySQL会依照View元件中包含的叙述,自动选择一个适合的演算法,可能是「MERGE」或「TEMPTABLE」。
下列是一个演算法设定为「MERGE」的View元件,在MySQL资料库中的运作情形:
下列是一个演算法设定为「TEMPTABLE」的View元件,在MySQL资料库中的运作情形:
并不是所有的View元件都可以指定演算法设定为「MERGE」,以下列查询员工统计资讯的叙述来说:
如果执行下列建立View元件的叙述,就会产生警告的讯息:
如果View元件包含的查询叙述有下列的情况,MySQL都会自动把演算法设定为「UNDEFINED」: