Phpmyadmin冻结查询,db太大了?

时间:2012-04-13 08:16:56

标签: php mysql phpmyadmin

我有两张桌子(一张有33k行,另一张有7k行)。我想比较两个表并删除两个id不匹配的行。但是当我发送查询时,它会冻结phpmyadmin。表格太大了吗?

SELECT * FROM likes LEFT OUTER JOIN uploads on likes.upload_id = uploads.upload_id WHERE uploads.upload_id IS NULL 

我知道数据库意味着处理数百万个数据,所以我不确定错误在哪里。

祝你好运, 的Mathias

4 个答案:

答案 0 :(得分:3)

我会做一个解释,所以你可以看到mysql的作用。这可以很好地说明使用了多少行。

EXPLAIN SELECT * FROM likes LEFT OUTER JOIN uploads on likes.upload_id = uploads.upload_id WHERE uploads.upload_id IS NULL

您还可以使用其他浏览器或其他会话来使用show processlist查看查询的执行方式。

答案 1 :(得分:2)

表可能不是太大但是如果脚本需要很长时间才能完成,那么PhpMyAdmin的查询超时可能会成为一个问题。尝试和change the timeout或根本不使用PhpMyAdmin。看看您是否能够使用服务器(或其他工具)上的命令行进行查询。

另见:

答案 2 :(得分:0)

Freeze是否意味着它正在发挥作用但永远不会“完成”任务?

如果是这样,
我有一个类似的事情,发现它们是由于列上有多个索引,例如列有一个PRIMARY索引和一个以列命名的索引,所以检查你的索引

答案 3 :(得分:0)

我有时会运行大量导入"查询"这可能需要几个小时才能完成。 (我解开"部分导入 - >允许导入中断......"。)

phpMyAdmin将不会在我启动查询的浏览器中响应,即使我尝试重新加载页面,但如果我在另一台机器上使用(我假设)另一台机器上的浏览器phpMyAdmin响应正常。

在另一个浏览器上,我然后向monitor发出SQL命令SHOW FULL PROCESSLIST,并在需要时终止该长时间运行的查询。