【发布时间】:2020-02-03 19:02:40
【问题描述】:
我有一个由 7 个表组成的数据库,每个表包含数百万条记录。我正在尝试使用聚合函数和 JOIN 子句从不同的表中检索数据。我正在使用 MySQL Workbench 和 phpMyAdmin 来运行查询。
问题是即使我限制了记录数,我也无法检索数据。但是,当我指出检索所需记录的 ID 时,它工作正常。例如:
select avg(grade)
from TableA
inner join TableB on TableA.ID = TableB.ID limit 5;
如果我使用上述查询,MySQL 将停止工作,直到失去与服务器的连接。
select avg(grade)
from TableA
inner join TableB on TableA.ID = TableB.ID
where TableA.ID = 1 OR TableA.ID = 2 .... to 5
在最后一次查询中,MySQL 将返回所需的结果。
如果可以的话,我想优化这些查询,而不是增加服务器超时。
【问题讨论】:
-
请提供表格结构。错误的表索引可能会导致查询执行速度变慢
-
能否为失败的查询添加explain plan?
-
也许你想要
TableB?? (on TableA.ID = TableA.ID) -
提供的信息不清楚。您必须指定您拥有的数据的性质。例如,为了简化读者的任务,您必须指定表的结构以及您拥有什么样的数据。但是,这类问题很难给出答案。