在MySQL中用视图替换表

时间:2015-04-01 20:58:38

标签: mysql view

我必须处理由我无法验证的第三方软件读取(并且仅读取)的数据库。它有一个表存储其他表的部分副本。

用视图替换此表是否安全?

1 个答案:

答案 0 :(得分:2)

除了视图限制之外,在MySQL中使用视图时,您必须注意一个非常重要的问题:WHERE语句的性能受到很大影响:

例如:

SELECT column_a FROM table_n WHERE column_a="some value";

快速假设在column_a上有一个索引。

现在创建一个视图:

CREATE VIEW column_a_view AS SELECT column_a FROM table_n;

SELECT * FROM column_a_view b WHERE b.column_a="some value";

可以导致全表扫描,因为MySQL(至少直到5.6)并不总是认识到它可以使用索引这一事实。

因此,特别是如果您正在使用大型表格,那么创建"副本"会更有利。相关数据并在每个时间间隔替换一次数据,然后使用视图。