我试图从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上创建了表的索引。
解决方案:实际上查询工作速度很快,这是我之后需要时间的处理。
答案 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行。