我有一个例子,我有三个表,创建了一个多到多的关系。这两个主表也引用了其他表。
我想知道怎样才能获得更好的性能,创建一个包含大量连接的View (大约7-8个表,其中一些是大的),并一次查询它以获取所有数据,或者在不同的表上执行4-5个查询来收集所需的所有信息。
事实上,从不同的7-8表中,为了获取所有的数据,我将加入到视图中,我只需要从每个表中获取一个或两个字段。
MySQL是将视图中所有JOINed表的所有列加载到内存中,还是只将选择和位置中的列加载到内存中?或者它是如何表现的,以及这对性能有什么影响?
发布于 2020-03-09 21:14:01
TEXTs
和BLOBs
存储在“非记录”中。因此,如果不需要列,就不要要求它--否则会导致(可能)额外的磁盘命中。另一种说法是,如果只指定所需的列,则使用SELECT *
可能会对性能造成不良影响。VIEWs
是语法糖。他们很少(也许永远)帮助表演。在某些情况下,它们比等效的SELECT
.INDEXes
慢是性能的主要关键。在索引中包含WHERE
和ON
子句的列是简单的第一步。更多:http://mysql.rjweb.org/doc.php/index_cookbook_mysql考虑提供一个单独的SELECT
和相关的SHOW CREATE TABLEs
。我们可以用更少的“挥手”来解决这个问题。
https://stackoverflow.com/questions/60518869
复制相似问题