2016-11-09 81 views
1

我正在重命名大型应用程序中的多个表。我需要保留旧的表名,因为应用程序的某些部分需要更长的时间才能更新,所以我们不能停机。MySQL重命名表,同时保留旧版代码的视图

我的想法是创建一个由新表中选择所有视图,类似这样的:

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)我将能够使插入和更新,以及与此观点删除。

我的问题是(考虑到这只是一个暂时的解决方案,直到我们能够迁移所有遗留代码才能使用这个新表格)我能否将其解决? 我会在连接和事物上有足够的表现吗? 我能用这种方法进行复杂的更新或删除(涉及连接)吗?

有没有更好的方法来解决这个问题?

在此先感谢您的帮助。

回答

1

性能应该基本相同。

对于没有集合函数的简单视图/ group by/having,distinct,limit,unions,标量子查询和仅返回文字的视图,MySQL默认使用MERGE算法,这有效地将引用这样的视图的查询如果您已经直接使用基表中的列。

请参阅View Algorithms的文档。

Determining what algorithm MySQL view is using也可能是信息性的。