mysql在与大表连接时有时速度较慢

b91juud3  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(447)

我有这么大的 User 有100多万行的表。奇怪的是,它通常会查询大多数用户的数据,但在查询某些用户的数据时,却总是需要30秒。它不会随机发生,但总是在特定的用户身上发生。
查询如下:

SELECT * FROM visit V
INNER JOIN group G ON G.id = V.group_id
INNER JOIN user U ON U.id = V.user_id AND U.group_id = V.parent_group_id
WHERE V.id = xxx AND V.group_id = xxx

但如果我去掉 JOIN 对于表用户,查询再次正常。
有人知道怎么解决这个问题吗?
(查询已缩小,实际查询很长,还需要保密)

yeotifhr

yeotifhr1#

连接大型数据集需要连接和where子句上的索引。

SELECT * FROM visit V
INNER JOIN group G ON G.id = V.group_id
INNER JOIN user U ON U.id = V.user_id AND U.group_id = V.parent_group_id
WHERE V.id = xxx AND V.group_id = xxx

要使联接高效运行,必须将以下字段定义为这些表的索引:
V.group_id V.user_id V.parent_group_id U.group_id 为了使查询高效地运行,它不应该使用 SELECT * (仅指定所需的列),并且应该优化查询

如果看不到你的数据和代码,我们就无能为力。

最终,您要求社区帮助您解决大型数据集上的mysql性能问题,但不愿意或无法向我们显示任何表结构、完整查询或示例源数据以及所需的输出。
只要我们瞎飞,我们就无能为力。

相关问题