MySQL中的视图及性能问题 zz
上一篇 /
下一篇 2007-12-30 21:57:41
/ 个人分类:LAMP
视图是
MySQL 5.0中增加的三大新功能之一(另外两个是存储过程与触发器),也是一般稍微“高级”一点的数据库所必需要有的功能。
MySQL在定义视图上没什么限制,基本上所有的查询都可定义为视图,并且也支持可更新视图(当然只有在视图和行列与基础表的行列之间存在一一对应关系时才能更新),因此从功能上说MySQL的视图功能已经很完善了。
|?/r)TxM.C n%P0木铎校园 BBS 社区7s$Ds ?;YOI i,N然而若要在应用中使用视图,还需要了解处理视图时的
性能,而MySQL在这方面问题是比较大的,需要特别注意。首先要知道
MySQL在处理视图时有两种算法,分别称为MERGE和TEMPTABLE。在执行"CREATE VIEW"语句时可以指定使用哪种算法。
所谓MERGE是指在处理涉及到视图的操作时,将对视图的操作根据视图的定义进行展开,有点类似于C语言中的宏展开。比如设有以下的表(类似于博客中的评论):
木铎校园 BBS 社区~t;r]!o"{-X.RCREATE TABLE `comment` ( `id` int(11) NOT NULL, `user_id` int(11) default NULL, `content` varchar(255) default NULL, PRIMARY KEY (`id`), KEY `idx_comment_uid` (`user_id`)) ENGINE=InnoDB;V9kpbT7^(Z;_0假设user_id < 10000的用户为VIP用户,我们可以这样创建一个视图来表示VIP用户的评论: