dddenis Asked: 2020-07-30 12:32:05 +0800 CST 2020-07-30 12:32:05 +0800 CST 2020-07-30 12:32:05 +0800 CST MySQL中的视图和临时表有什么区别? 772 Vistas和 和Tablas Temporales有什么区别MySQL? 在网上阅读了关于何时应该使用视图和临时表之后,我有疑问。在经验中,我总是将临时表与游标一起使用,但我之前从未接触过视图,我发现它们的行为是相似的,不同之处以及何时使用每一个都是可取的。 mysql 1 Answers Voted Best Answer Alvaro Montoro 2020-07-31T05:46:10+08:002020-07-31T05:46:10+08:00 关于第一个问题,这里是 MySQL 中临时表和视图的一些重要区别: 性质:临时表是一张表,而视图就像是在其他表上执行的查询或宏。 持久性——视图是永久的,并且会在会话之间继续存在,而临时表将在会话结束时消失。 空间:临时表需要额外的空间,而视图不需要。 完整性和一致性:我最初将它们分开,但它们确实相关: 一些视图可以更新,将更新的值将是源表的值;而是在临时表中,只会更新临时表的值。 反之亦然:如果生成视图的表中的值被更新,则视图中的值也会被更新;临时表中并非如此。 性能:视图不会提高查询性能,您可以向临时表添加索引和键以使其更快(尽管填充它们会浪费时间)。 锁定- 对视图的查询可以锁定源表,而临时表不会。 对于问题的第二部分:何时使用每个?这在很大程度上取决于您想要对包含的数据进行的使用: 如果您拥有的是一个复杂的查询,但在性能方面没有太多成本,我会选择一个视图。 如果查询太大太复杂并且数据不适合缓存,我会使用临时表。 如果要对数据进行多项操作和查询,我会使用临时表。 如果您想操纵结构(例如添加索引以使查询更快),我肯定会使用临时表。 如果源表中的数据在程序执行期间不会更改(或者您不在乎),我会使用临时表(它可以避免源表上可能出现的锁定)。
关于第一个问题,这里是 MySQL 中临时表和视图的一些重要区别:
对于问题的第二部分:何时使用每个?这在很大程度上取决于您想要对包含的数据进行的使用: