执行已知良好查询(本地WAMP服务器)时phpMyAdmin挂起

时间:2012-03-27 20:58:59

标签: mysql phpmyadmin left-join

我试图从phpMyAdmin(在本地WAMP服务器上)运行以下查询:

SELECT  table2.AreaName, table2.Dialcode
FROM    table2
LEFT JOIN
master
ON      master.Dialcode = table2.Dialcode
WHERE   master.Dialcode IS NULL

我首先尝试了两个表,每个表中有4个条目,我得到了一个结果。

现在我在我的"真实"上尝试(相同的查询)每个表约有20000个条目,我点击GO。在5-6秒内,我有#34; Loading3出现在中间,但没有任何事情发生,没有结果,任何加载......

有什么想法吗?

编辑:

  

显示MASTER的指数

     

表Non_unique Key_name Seq_in_index Column_name归类基数Sub_part Packed Null Index_type

     

master 1 Dialcode 1 Dialcode A 18731 NULL NULL YES BTREE

对于table2也是如此。 我已经通过单击PhpMyadmin中的INDEX按钮在DialCode上创建了表的索引。

解决方案:实际上查询工作速度很快,这是我之后需要时间的处理。

2 个答案:

答案 0 :(得分:1)

我刚刚创建了一个非常简单的模拟你的场景,它返回0.03s,table2中有1M条记录,master中有70K条记录。您可能需要将索引添加到用于连接的字段 -

ALTER TABLE `table2`
    ADD INDEX `IX_table2_dialcode`(`Dialcode`);

ALTER TABLE `master`
    ADD INDEX `IX_master_dialcode`(`Dialcode`);

答案 1 :(得分:0)

您的“真实”表包含大约20000个条目。这会导致phpmyadmin在运行SQL时“挂起”。

要防止这种情况,请限制结果集。即只是将limit 0,5附加到您正在尝试的SQL上。这将仅获取结果集的前5行。