【发布时间】:2012-01-11 19:27:01
【问题描述】:
让一个视图引用另一个视图有什么问题吗?例如,假设我有一个 用户表
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
基于另一种观点是否存在性能问题?让我们也假设这是最简单的示例,而现实世界的场景会复杂得多,但基于另一个视图的一个视图的相同一般概念。
【问题讨论】:
-
通常性能比直接对表执行 Select 更差,但您最好尝试一下,看看它是否适合您的用例。
-
删除 PRIMARY KEY (id) 后的分号。也将 OT NULL 更改为 NOT NULL
标签: mysql sql performance database-design views