创建视图时,
CREATE VIEW view1 AS SELECT * FROM table1mysql内部将此更改为
CREATE VIEW view1 AS SELECT f1, f2, f3 FROM table1如果将新列f4添加到table1,则view1仍然只有前3列。你必须重新创造你的视野。如果你有很多观点的话,这是很烦人的。
是否有一种方法可以使mysql在视图声明中保存SELECT *,因此它总是选择所有字段,而不管表是否已经更改?
发布于 2017-12-14 08:51:59
MySql有一个正确的行为。
当您将视图创建为SELECT * FROM table1时,MySql会使用完整的字段列表更改代码。
更改表结构时,视图必须由用户更改。
如果存在这种自动行为,则可以在使用视图时创建性能问题。
假设您添加了50个字段,并且在表单中使用您的视图,您可以将数据加载从3个字段更改为53个字段。不是很好。
所以这种行为是正确的。
发布于 2017-12-14 08:51:52
长话短说,不。这就是MySQL在内部处理视图的方式。
专业提示:不要使用视图。这是穷人把不必要的复杂性隐藏在另一种复杂性背后的方式。简单地进行简单的查询是更好的方法,而MySQL则以更好的方式执行。
发布于 2017-12-14 08:59:31
MySql视图不用于返回表的完整定义,它的基本用途是用规范或marge数据返回表的一部分。
Views在没有it.The原则的情况下不会有多大用处,如果您从一个视图中选择从表中选择的视图,如果视图从子查询中的表中选择,并且视图没有使用合并algorithm.View处理进行优化,那么它也适用。您可以看到这个博客,以了解MySql.视图限制视图的正确之处。
https://stackoverflow.com/questions/47809237
复制相似问题