MySql视图是否动态且高效?

San*_*go 21 mysql sql

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

irc*_*ell 26

基本上,MySQL 中基本上有两种类型的视图.

  1. 合并视图

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

  2. Temptable Views

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

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

但请注意一些重要的事项,即MySQL对物化视图没有任何支持.因此,它不像Oracle那样复杂的视图会显着提高查询的性能.视图的查询总是在MySQL中执行.

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

  • @symcbean:您是否有任何支持该声明的参考?我很想看到它(合法地如此)...... (2认同)

小智 11

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