MySQL의 쿼리 결과에서 사용자 변수 설정
MySQL에서 사용자 변수는 쿼리 실행 중에 임시 값을 저장하는 편리한 방법을 제공합니다. 이 기능을 사용하면 특정 조건이나 데이터베이스에서 검색된 데이터를 기반으로 쿼리를 동적으로 조정할 수 있습니다.
검색 결과에 따라 @group과 같은 사용자 변수를 설정하려는 시나리오가 있다고 가정해 보겠습니다. USER 및 GROUP이 고유한 USER 테이블에 대해 쿼리합니다.
기존 중첩 쿼리 접근 방식
일반적으로 이 작업은 언급한 대로 중첩 쿼리를 사용하여 수행할 수 있습니다.
set @user = 123456; set @group = (select GROUP from USER where User = @user); select * from USER where GROUP = @group;
그러나 성능상의 이유로 가능하면 중첩 쿼리를 피하는 것이 중요합니다.
최적화된 변수 할당
이에서 변수 할당을 최적화하려면 시나리오에서는 할당을 쿼리 자체로 직접 이동할 수 있습니다.
SET @user := 123456; SELECT @group := `group` FROM USER WHERE user = @user; SELECT * FROM USER WHERE `group` = @group;
이 접근 방식은 중첩 쿼리가 필요하지 않아 더 효율적입니다.
테스트 사례
이 최적화를 입증하려면 다음 테이블 설정을 고려하십시오.
CREATE TABLE user (`user` int, `group` int); INSERT INTO user VALUES (123456, 5); INSERT INTO user VALUES (111111, 5);
결과
SET @user := 123456; SELECT @group := `group` FROM user WHERE user = @user; SELECT * FROM user WHERE `group` = @group; +--------+-------+ | user | group | +--------+-------+ | 123456 | 5 | | 111111 | 5 | +--------+-------+ 2 rows in set (0.00 sec)
할당 연산자 참고
SET 문의 경우 = 또는 :=를 할당 연산자로 사용할 수 있다는 점에 유의할 가치가 있습니다. 그러나 다른 명령문에서는 =가 SET 외부의 비교 연산자로 해석되므로 :=를 사용해야 합니다.
대체 접근 방식
추가 팁으로 또한 LIMIT 절을 사용하여 단일 값을 사용자 변수로 검색할 수도 있습니다.
SET @user := 123456; SELECT `group` FROM user LIMIT 1 INTO @group; SELECT * FROM user WHERE `group` = @group;
위 내용은 성능 향상을 위해 중첩 쿼리를 피하면서 쿼리 결과를 기반으로 MySQL에서 사용자 변수를 효율적으로 설정하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!