MySQL - 从视图中选择或直接选择

Posted

技术标签:

【中文标题】MySQL - 从视图中选择或直接选择【英文标题】:MySQL - Select from view or direct select 【发布时间】:2016-07-18 11:45:35 【问题描述】:

我在一张简单的桌子上创建了一个视图。我的问题是我在该视图上选择的平均执行时间约为 29 秒。 但是,如果我运行直接描述视图的 select 语句,查询会在大约 0.015 秒内执行。

现在,我查了一些信息,here 和here,人们基本上说应该大致相同,因为视图只是一个存储的查询。

有没有可能我在时间上有这么大的差异?我已经尝试使用 SQL_NO_CACHE 来确保没有使用缓存,因此在测试这两个选项时我得到了有代表性的数据。

除非在降低成本方面别无选择,否则我宁愿保留自己的观点。

【问题讨论】:

运行描述视图的选择与从中选择不同。 ***.com/questions/3492926/… @DanBracuk,您能否在执行时间方面更具体一些?我知道这显然不一样。但它如何影响执行时间?难不成我的时间差这么大? 谢谢你们的帮助,伙计们,答案是:是的,时间上可能有这么大的差异! 【参考方案1】:

经过大量研究和反复试验,我得出的结论是,即使是简单的查询和视图,在从视图中选择 * 或仅运行在创建查看。

【讨论】:

您的研究在文档、博客或其他答案方面取得了哪些进展? @Drew,通过一些谷歌搜索获得关于 SE 的其他问题。当然还有很多试验和错误:)。 好的,你能至少分享一些统计数据吗?只是想让这个问题成为我们不会删除或认为无用的问题。 @Drew,我在问题本身中提到了我的消息来源。另外,我之前在这里问过一个问题(***.com/questions/38433003/…)。其中一个答案指出,如果我使用 where 子句查询我的视图,我的执行时间可能与执行视图所描述的原始 select 语句不同。

以上是关于MySQL - 从视图中选择或直接选择的主要内容,如果未能解决你的问题,请参考以下文章

直接从表中选择和从视图中选择是不是具有相同的性能影响

从带有 HAVING 子句的 MySQL 视图中选择返回空结果集

MySQL设计;带有变量的视图或存储过程

从 MySQL 中的两个视图中选择而不留下记录

从 Rails 中的视图选择或创建

在带有 react-router 的 React 中,当我从一个复杂的视图中导航出来,然后直接返回时,如何保留一个人的所有视图选择?