首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL视图是否将所有连接表的所有数据加载到内存中?

MySQL视图是否将所有连接表的所有数据加载到内存中?
EN

Stack Overflow用户
提问于 2020-03-04 03:59:22
回答 1查看 272关注 0票数 0

我有一个例子,我有三个表,创建了一个多到多的关系。这两个主表也引用了其他表。

我想知道怎样才能获得更好的性能,创建一个包含大量连接的View (大约7-8个表,其中一些是大的),并一次查询它以获取所有数据,或者在不同的表上执行4-5个查询来收集所需的所有信息。

事实上,从不同的7-8表中,为了获取所有的数据,我将加入到视图中,我只需要从每个表中获取一个或两个字段。

MySQL是将视图中所有JOINed表的所有列加载到内存中,还是只将选择和位置中的列加载到内存中?或者它是如何表现的,以及这对性能有什么影响?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-09 21:14:01

  • 的一些TEXTsBLOBs存储在“非记录”中。因此,如果不需要列,就不要要求它--否则会导致(可能)额外的磁盘命中。另一种说法是,如果只指定所需的列,则使用SELECT *可能会对性能造成不良影响。
  • MySQL VIEWs是语法糖。他们很少(也许永远)帮助表演。在某些情况下,它们比等效的SELECT.
  • Good INDEXes慢是性能的主要关键。在索引中包含WHEREON子句的列是简单的第一步。更多:http://mysql.rjweb.org/doc.php/index_cookbook_mysql
  • The最好的索引:许多关系:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table
  • Each查询需要一些开销。因此,通常最好使用尽可能少的查询来执行任务。例如,使用一个查询获取一组“If”,然后构建另一个查询来处理相应的行,很可能比组合查询慢。

考虑提供一个单独的SELECT和相关的SHOW CREATE TABLEs。我们可以用更少的“挥手”来解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60518869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档