{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

MySQl中JOIN后面的子查询语句得到的结果叫做“视图”吗?

xiaolinbangxiaolinbang 回答0 收藏1
问题描述:这是一位工作多年的同事告诉我的。他说这种情况下,这个“视图”用不到索引,速度会比较慢。可是在我的印象中,“视图”应该是那种通过create view语句创建出来的东西才叫做视图啊!我同事说的话对不对?
收藏问题

1条回答

kel

kel

回答于2022-06-28 14:47

视图是存储在数据库中的查询的sql 语句,是一种可视化的虚拟表,其内容由查询定义,通过视图看到的数据只是存放在基本表中的数据。视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。

视图可以隐藏一些数据,比起真实的表相对安全;由于把涉及到多表联合的查询事先存储起来,使用的时候更加易于理解。

sql中把一个查询的结果当作另一个表来查询,这叫做临时表。“JOIN后面的子查询语句得到的结果”,这就是个临时表,而不能称为视图,虽然有和视图相同的特征,比如都是来自于真实表中的字段的查询结果,但其并不存在于数据库中,不能被重复使用。

视图和直接写SQL语句相比,在性能上速度相差不大,但VIEW毕竟是已经编译存放在数据库中,相对于直接SQL省去了语法检查和解析阶段的开销。当然查询快和慢终究还是要看业务实际情况,在使用索引的情况下,效率会得到很大的提升。

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<