我正在使用PHP并使用Wamp在localhost下。我的数据库有2个表,每个表有大约13,000个数据。我想检查来自TableA的NameFromA是否存在于TableB的NameFromB中。当我尝试在100个数据周围使用少量数据时,我有这个代码。
SELECT * FROM TableA WHERE EXISTS (SELECT * FROM TableB WHERE NameFromA = NameFromB)
我的问题是当我尝试运行它并比较13,000多个数据时没有任何反应。它没有输出。
答案 0 :(得分:1)
试试这个:
SELECT
TableA.*
FROM
TableA
INNER JOIN TableB ON (TableA.NameFromA = TableB.NameFromB)
如果它仍然很慢,可能是您在DB中有问题或者超时时间太短。
您也可以尝试在MySql管理中运行此操作,以查看该查询将花费多长时间。
还有一件事。您检索的数据必须发送到Web服务器。如果您的表包含每行的大量数据,并且有很多行,这也需要时间。
修改强>
好的@mar。您必须进行一些故障排除才能找到问题所在。
首先:如果您的PC功能强大。因为对于普通的PC和Server 13k记录都没什么。
第二:你确定表A中至少有一个名字出现在表B中吗?
第三:尝试在外部SQL工具中运行查询 - 而不是在php中。如果它快速重新设置正确的设置,则问题出在php中。
答案 1 :(得分:1)
在NameFromA
中的TableA
列和NameFromB
中的TableB
上创建索引。
尝试以下查询:
SELECT a.*
FROM TableA AS a, TableB AS b
WHERE a.NameFromA = b.NameFromB