我有一个名为USERS的表,其中有几个字段,其中一个名为'varchar'(6)类型的'postal'。查找与200,000条记录表中的另一个值匹配的varchar值
然后我有另一个名为POSTALS的表,它只有一列:'邮政'类型'varchar'(6)。 这张邮政表有大约200,000条记录。
我需要从USERS表中获取所有记录,该表中的'邮政'与POSTALS表中的'邮政'相匹配。
我尝试了明显的基本查询:
SELECT users.user_id, users.user_fname, user_lname
FROM users, postals
WHERE replace(user_postal , ' ','') = postals.postal
但此查询永远不会完成。它总是超时。我可以看到这将是一个非常耗费资源的查询,因为它将'用户'(每行大约有250,000行)的每个值与'邮政'(每行大约有200,000行)的每个值进行比较。
其他更简化的比较方式? 谢谢。
也许在该列上做TRIM并尝试在加入之后加入它们。将负载分开。 – Mihai
你需要'替换'吗?使用它将删除用户表中该字段的任何索引。 – user2480596