2012-04-13 64 views
2

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

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

我知道数据库是为了处理数百万数据的,所以我不知道在哪里的错误所在。

最好的问候, 马蒂亚斯

+0

“冻死”是什么意思? – 2012-04-13 08:21:09

+0

当phpmyadmin冻结时,脚本正在执行。你确定你有索引吗? 33k行不算什么,不应该成为问题。 – 2012-04-13 08:22:26

+0

光标看起来好像在工作,但没有任何反应。 很确定我有索引到位,是 – 2012-04-13 08:23:59

回答

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查看查询是如何执行。

+2

用'EXPLAIN EXTENDED'你甚至可以获得更多的信息 – 2012-04-13 08:26:13

0

是否冻结意味着它的工作,但从来没有更新/从来没有 “完成” 的任务?

如果是这样,
我有类似的事情,并发现他们已经由于在一列上有多个索引,例如一列有一个PRIMARY索引和一个以该列命名的索引,所以检查您的索引

0

我有时会运行大量导入“查询”,可能需要几个小时才能处理。 (我解开“部分导入 - >允许中断导入...”)

phpMyAdmin不会在浏览器中响应我开始查询,即使我尝试重新加载页面,但如果我去到另一台机器上的浏览器(我假设)一个不同的IP地址phpMyAdmin罚款。

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