有一个视图引用另一种视图有什么问题吗?例如,说我有一个用户表
CREATE TABLE `users` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `first_name` varchar(255) NOT NULL, `last_name` varchar(255) NOT NULL, PRIMARY KEY (`id`) );
然后为了论证,一个视图仅显示所有用户
CREATE VIEW all_users AS SELECT * FROM users
然后是一个仅返回其 first_name* 和 last_name 的视图 *
CREATE VIEW full_names AS SELECT first_name, last_name FROM all_users
将一个视图置于另一个视图是否存在性能问题?我们还假装这是最简单的示例,现实情况会更加复杂,但是将一个视图置于另一视图的基础上却具有相同的一般概念。
这取决于所使用的算法。TEMPTABLE可能非常昂贵,而MERGE应该与直接使用该表相同,因此不会造成任何损失。