MySql视图是否动态且高效?

时间:2011-02-03 13:46:50

标签: sql mysql

我希望创建一个表格视图,该表格将突出显示符合特定条件的数据。例如,如果我有一个包含整数值的表,我希望我的视图显示值大于100的行。我知道如何通过在表上创建视图来实现这一点,但视图是否动态?我已经在MySQL中测试了它,它似乎是真的。但如果我的表有超过1000行,这是否有效?视图是否仍会“动态”更新到原始表中的任何更改?

2 个答案:

答案 0 :(得分:25)

基本上,MySQL中基本上有2 types of views

  1. 合并视图

    这种类型的视图基本上只是用视图的SQL重写您的查询。所以这是自己编写查询的简写。这没有提供真正的性能优势,但是使编写复杂查询更容易并使维护更容易(因为如果视图定义发生更改,则不需要针对视图更改100个查询,只需要更改一个定义)。

  2. Temptable Views

    这种类型的视图使用视图的SQL查询创建一个临时表。它具有合并视图的所有好处,但也减少了视图表的锁定时间。因此,在高负载的服务器上,它可以获得相当显着的性能提升。

  3. 还有“Undefined”视图类型(默认),让MySQL在查询时选择它认为最好的类型......

    但请注意一些值得注意的事情,即MySQL对materialized views没有任何支持。因此,它不像Oracle那样复杂的视图会显着提高查询的性能。视图的查询总是在MySQL中执行。

    就效率而言,MySQL中的视图不会增加或降低效率。在编写和维护查询时,它们可以使您的生活更轻松。我已经在具有数亿行的表上使用了视图,并且它们工作得很好......

答案 1 :(得分:11)

mysql不使用临时表上的索引...因此它会严重影响您的性能。