暂无 |

6 View的演算法

View元件可以提供更方便的资料查询与维护方式,在你建立View元件的时候,除了指定的查询叙述要符合规定,还可以指定资料库执行View元件时所使用的「演算法、algorithm」:

mysql_11_snap_38

一般来说,你不需要特别指定View元件使用的演算法。如果在建立View元件的时候,没有指定使用的演算法为「MERGE」或「TEMPTABLE」,MySQL会设定为「UNDEFINED」,这个设定表示MySQL会依照View元件中包含的叙述,自动选择一个适合的演算法,可能是「MERGE」或「TEMPTABLE」。

下列是一个演算法设定为「MERGE」的View元件,在MySQL资料库中的运作情形:

mysql_11_snap_39

下列是一个演算法设定为「TEMPTABLE」的View元件,在MySQL资料库中的运作情形:

mysql_11_snap_40

并不是所有的View元件都可以指定演算法设定为「MERGE」,以下列查询员工统计资讯的叙述来说:

mysql_11_snap_41

如果执行下列建立View元件的叙述,就会产生警告的讯息:

mysql_11_snap_42

如果View元件包含的查询叙述有下列的情况,MySQL都会自动把演算法设定为「UNDEFINED」:

  • 群组函式:SUM()、MIN()、MAX()、COUNT()
  • DISTINCT
  • GROUP BY
  • HAVING
  • UNION或UNION ALL
  • 「SELECT」子句中包含一个明确的值,而不是表格的栏位
python教程
java教程
php教程
php+mysql教程
ThinkPHP教程
MySQL
css
javascript
Django教程

发表评论

    评价:
    验证码: 点击我更换图片
    最新评论