首页 > 解决方案 > 如何使用 OR 条件提高 SQL JOIN 的性能

问题描述

复杂的 JOIN 查询为:

SELECT 
  FIRST.NAME,
  SECOND.FIRST_NAME,
  SECOND.LAST_NAME
FROM FIRST_TABLE FIRST
LEFT JOIN SECOND_TABLE SECOND 
  ON (SECOND.FIRST_NAME = FIRST.NAME OR SECOND.LAST_NAME = FIRST.NAME)

将导致性能不佳。

如何获得更好的性能?

标签: mysqlsqldatabasejoinhana

解决方案


这回答了问题的原始版本。

你可能会更好exists

SELECT FIRST.ID, FIRST.NAME
FROM FIRST_TABLE FIRST 
WHERE EXISTS (SELECT 1 FROM SECOND_TABLE SECOND WHERE SECOND.FIRST_NAME = FIRST.NAME) OR
      EXISTS (SELECT 1 FROM SECOND_TABLE SECOND WHERE  SECOND.LAST_NAME = FIRST.NAME);

SECOND_TABLE(LAST_NAME)然后为了性能,您需要AND上的索引SECOND_TABLE(FIRST_NAME)


推荐阅读