我有一個名爲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