MySQL数据库中的表和视图有什么区别?

MySQL数据库中的表和视图有什么区别?,mysql,view,Mysql,View,我加入了许多表,希望创建一些更容易查询的表或视图,以便对数据进行快速分析。使用组合数据创建新表或新视图的含义是什么 目前,我加入的表是静态的,但这些代码将来可能会移动到我们的活动表中。表存储数据 视图是保存在数据库中供以后使用的存储过程,如select*from table 您可以让一个视图连接两个表,然后在不使用join子句的情况下从该视图中进行选择,但得到一个连接的结果这有点过于简单化,但视图基本上是一个在返回结果(行和列)的表上保存的查询,然后您可以像查询自己的表一样进行查询 在MySQL

我加入了许多表,希望创建一些更容易查询的表或视图,以便对数据进行快速分析。使用组合数据创建新表或新视图的含义是什么


目前,我加入的表是静态的,但这些代码将来可能会移动到我们的活动表中。

表存储数据

视图是保存在数据库中供以后使用的存储过程,如
select*from table


您可以让一个视图连接两个表,然后在不使用join子句的情况下从该视图中进行选择,但得到一个连接的结果

这有点过于简单化,但视图基本上是一个在返回结果(行和列)的表上保存的查询,然后您可以像查询自己的表一样进行查询


在MySQL5.0中,视图并不是很好,因为每次使用视图时它都执行底层查询,所以视图没有什么意义(尽管它们对代码重用很有用)。不过,自5.0版以来,情况可能已经发生了变化。

请注意视图,因为它们不一定在基础表中正确使用索引

有关更多信息,请参阅本文


除了Rob的解释之外:


您不仅可以对表授予特权,还可以对视图授予特权。使用此选项,您只能访问数据库数据的已编译子集。

因此,如果创建我的视图的查询需要10分钟才能执行,那么视图上的查询将至少需要查询时间+10分钟(这也是一种过于简化的做法)?我相信是这样的,除非自5.0以来有所更改。查询缓存和其他内部“mysql是智能的”机制可能会稍微缓解它(因此是过于简单化的部分),但是……是的,或多或少。创建视图的查询是否必须在每次对视图进行查询时重新执行?视图是否会更新为在更新时运行视图的表?是,更新基础表将更新视图“live”。因此,如果创建my view的查询需要10分钟才能执行,则视图上的查询将至少需要query\u time\u min+10分钟(这可能过于简化)?@T.Brian Jones-有点-但是视图查询的执行时间与单独执行sql的执行时间相同。@T.Brian Jones-如果答案提供了有用的信息,那么很高兴对其进行投票。