customer 및 customer_data라는 두 테이블이 주어지고 후자에 고객 변경 사항에 대한 기록이 포함되어 있는 경우 현재 수행할 작업은 검색하는 것입니다. customer_data의 가장 최근 항목만 고객 테이블의 각 고객과 조인되도록 하면서 고객 정보를 확인하세요.
이를 달성하려면 더 나은 성능과 코드 가독성을 제공하므로 기본 쿼리 본문 대신 WHERE 절을 사용합니다. 최적화된 쿼리는 다음과 같습니다.
SELECT c.*, CONCAT(title, ' ', forename, ' ', surname) AS name FROM customer c LEFT JOIN customer_data d ON c.customer_id = d.customer_id WHERE d.customer_id = ( SELECT MAX(customer_id) FROM customer_data WHERE customer_id = c.customer_id ) LIMIT 10, 20;
이 쿼리는 WHERE 절 내에서 필터링하여 customer_data의 가장 최근 행만 고객의 각 고객에 대해 조인되도록 합니다. LEFT JOIN을 사용하면 customer_data에 해당 항목이 없더라도 customer의 모든 고객이 결과에 포함됩니다.
CONCAT 및 LIKE를 함께 사용하는 것에 대한 우려 사항에 대해서는 말씀하신 것이 맞습니다. CONCAT은 문자열을 연결하고 결과 문자열을 LIKE 연산자와 함께 사용하여 패턴 일치를 수행할 수 있습니다. 귀하의 질문은 그런 측면에서 유효합니다.
위 내용은 MySQL의 기록 테이블에서 가장 최근 행을 효율적으로 조인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!