我们能否在 mysql 或 sql 中创建物化 View ,它会自动重新加载底层基表中的数据,而无需访问基表。
阐述:
我创建了 viewMasterTable View ,它是 3 个表的连接,
TableA,TableB,Table = viewMasterTable
现在,如果对基表进行了任何更改,例如更新、插入或删除,而没有触及基表,我希望用数据重新加载此 View 。
**Will this view concept will help in performance increase**
最佳答案
您可以在 SQL-Server 企业版中创建物化 View 。在 MySQL 中,您不能创建物化 View 。因此这仅适用于 SQL-Server 和非常特定的版本。
现在你不能不劳而获。如果具体化 View ,则意味着基表中使用的源列必须与基表中的数据保持同步。因此,基表上的任何更新/插入/删除都会受到影响,因为服务器现在必须写入基表并更新 View 。因此,每次写入都会有一个额外的操作要完成,这会对服务器本身造成性能损失。根据表的大小、 View 和更新频率,这可能是也可能不是小惩罚。
您可以为物化 View 建立索引,这就是它的强大之处。假设您有一个非常复杂的 View ,可以通过各种列进行过滤,物化 View 将允许您索引 View 中的字段,从而允许用户更快地进行过滤。然而,不利之处在于,对于您在物化 View 上创建的每个索引,都会产生更多的写入惩罚,因为服务器需要在更新 View 时更新索引。
因此,虽然它可能是提高复杂查询读取性能的好方法,但您会看到写入性能下降。这个处罚会有多严重?那么这取决于您如何安排磁盘 IO 路径,例如将索引、 View 和表放在单独的物理轴上将有助于减轻一些写入开销。
关于mysql - 自动加载 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27950678/