我在大型应用程序中重命名多个表。我需要保留旧的表名,因为应用程序的某些部分需要更长时间才能更新,我们可以没有停机时间。
我的想法是创建一个从新表中选择所有内容的视图,如下所示:
create view old_table_name as select a as x, b as y, c as z from new_table_name;
根据这篇文章(http://dev.mysql.com/doc/refman/5.7/en/view-updatability.html),我将能够使用此视图进行插入和更新以及删除。
我的问题是(考虑到这只是一个临时解决方案,直到我们能够迁移所有遗留代码才能使用这个新表)我能够解决这个问题吗? 我会在连接和类似的东西中获得足够的性能吗? 我能用这种方法进行复杂的更新或删除(涉及连接)吗?
有没有更好的方法来解决这个问题?
提前感谢您的帮助。
答案 0 :(得分:1)
表现基本相同。
对于没有聚合函数/ group by / having,distinct,limit,unions,scalar子查询和仅返回文字的视图的简单视图,默认情况下MySQL使用MERGE
算法,这有效地重写了引用这种算法的查询一个视图就像你直接使用了基表中的列一样。
请参阅文档中的View Algorithms。