gpt4 book ai didi

php - mysql 在连接大表时有时会很慢

转载 作者:行者123 更新时间:2023-11-29 06:49:28 27 4
gpt4 key购买 nike

我有一个包含 100 万多行的大型 User 表。奇怪的是,它可以正常查询大多数用户数据,但查询某些用户数据时总是需要长达 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,查询又正常了。

有人知道如何解决这个问题吗?

(查询已缩小,实际查询很长,也需要保密)

最佳答案

连接大型数据集需要 JOIN 和 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 性能问题,但不愿意或无法向我们展示任何表结构、完整查询或示例源代码 -数据和期望的输出。

只要我们盲目飞行,我们就无能为力。

关于php - mysql 在连接大表时有时会很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48065988/

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