gpt4 book ai didi

mysql - 在 MySql 中一次获取 15 个表结果的更好方法

转载 作者:行者123 更新时间:2023-11-29 20:51:56 24 4
gpt4 key购买 nike

我有大约20张 table 。这些表只有 id(主键)和描述(varchar)。数据量很大,一张表大约有400行。

现在我必须一次获取至少 15 个表的数据。现在我正在一一呼唤他们。这意味着在一次 session 中我会调用 15 个电话。这使我的进程变慢。

谁能建议一种更好的方法来从数据库中获取结果?

我正在使用 MySQL 数据库 并在服务器端使用 Java Springs。为所有组合创建 View 会对我有帮助吗?由于这个问题,应用程序变得很慢,我需要一个解决方案来加快我的进程。

最佳答案

听起来你的架构不太好。 20 个 id/varchar 表听起来像是一个损坏的 EAV,通常认为它一开始就损坏了。同样,我认为 UNION 查询会有所帮助。这将是要在数据库中创建的“ View ”,因此您只需SELECT * FROM thisviewyoumade 并让它担心命中所有表。

UNION 查询的工作原理是将多个 SELECT 语句“堆叠”在一起。重要的是,每个 SELECT 语句都具有相同的字段数量、序数和类型,这样当它堆叠结果时,所有内容都会匹配。

就您而言,创建一个额外的字段是有意义的,这样您就知道它来自哪个表。类似于以下内容:

SELECT 'table1' as tablename, id, col2 FROM table1
UNION ALL
SELECT 'table2', id, col2 FROM table2
UNION ALL
SELECT 'table3', id, col2 FROM table3
... and on and on

第一个 SELECT 语句中的字段名称或别名是返回的结果集中使用的字段名称,因此不必担心执行一堆 AS blahblahblah 在后续的 SELECT 语句中。

真正的问题是,对于如此微小的数据量,此联合查询的执行速度是否会比 15 个单独的调用更快。我认为更好的选择是更改您的架构,以便这些内容已经存储在一个表中,就像这个 UNION 查询输出一样。那么您将需要针对单个表的单个选择语句。 400x20=8000 仍然是一个很小的小表来查询。

关于mysql - 在 MySql 中一次获取 15 个表结果的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37969704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com