gpt4 book ai didi

php - Mysql left join 花费太长时间或崩溃...请帮助

转载 作者:行者123 更新时间:2023-11-29 06:18:30 24 4
gpt4 key购买 nike

大家好,我正在工作中创建报告,由于某种原因,在使用左连接时遇到了一些严重的问题。我有两个表,一个 u_entities 表和一个 u_activities 表,其中实体与事件之间存在一对多关系。我需要找出哪些实体没有与之关联的事件。所以我想将连接实体留给事件并列出空的事件。所以我的查询看起来像这样

              SELECT *
FROM (SELECT a.activity_id, e.entity_id, e.acc_name
FROM u_entity AS e
LEFT JOIN u_activity AS a
ON e.entity_id = a.account_id) AS i
WHERE i.activity_id = ''

这花费了太长的时间,所以为了查看左连接的结果,我尝试在 phpmyadmin 中运行子选择,如下所示

                    SELECT a.activity_id, e.entity_id, e.acc_name
FROM u_entity AS e
LEFT JOIN u_activity AS a
ON e.entity_id = a.account_id

我遇到了同样的问题,服务器一直在工作,但永远不会结束。我必须使用 xammp 在本地计算机上获取这些表并运行查询,因为人们需要服务器并且它已锁定。当我在本地主机端的 phpmyadmin 中运行第二个查询时,我的计算机崩溃了。实体表有大约 20,000 条记录,事件大约有 80000 条,但我之前已经在这些表上完成了内部联接,没有问题,我不明白为什么这是一个问题。也许我的查询是错误的或者什么的。我以前从未做过左连接,所以我不知道。如果有另一种方法可以做到这一点,那会很酷,但我真的很想知道为什么左连接不能正常工作。请任何回复将不胜感激。

最佳答案

请注意,获取没有事件的实体的更快方法是执行


SELECT e.id, ...
FROM u_entity e
LEFT JOIN u_activity a ON e.entity_id=a.account_id
WHERE ISNULL(a.account_id)

关于运行缓慢的问题,您需要确保已在联接中使用的列上创建了索引(在本例中为 entity_idaccount_id )并且它们是最新的(运行repair table u_entityrepair table u_activity - 如果您的表是MyISAM)。您确实应该运行 EXPLAIN SELECT... (将所有查询放在 EXPLAIN 部分之后)并将结果发布到此处以获得更好的帮助。

关于php - Mysql left join 花费太长时间或崩溃...请帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5110864/

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