programing

UNION과 LIMIT를 조합하여 사용할 경우 MariaDB의 이상한 동작

mailnote 2023. 9. 18. 22:37
반응형

UNION과 LIMIT를 조합하여 사용할 경우 MariaDB의 이상한 동작

SELECT `foo` 
FROM `table`
WHERE `bar` = 'def'
LIMIT 1500;

... 조건(def)에 대해 1500개의 행을 반환합니다.

(SELECT `foo` 
FROM `table`
WHERE `bar` = 'abc'
LIMIT 1000)
UNION
(SELECT `foo` 
FROM `table`
WHERE `bar` = 'def'
LIMIT 1500)

... 2498 행을 반환하고 두 번째 조건(def)에 대해 1498 행을 반환합니다.

첫 번째 쿼리의 출력에서 알 수 있듯이 조건 "def"가 1500 행을 반환하기에 충분한 레코드가 분명히 있습니다.그럼에도 불구하고 UNION과 함께 사용할 경우 해당 조건에 대해 반환되는 레코드가 너무 적습니다.

이 행동을 추적할 수 있는 포인터를 가지고 있는 사람이 있습니까?

UNION이 고유한 결과만 선택하므로 행 수를 줄일 수 있습니다.그러나 UNION ALL을 사용하여 모든 결과 양식을 가져올 수 있습니다. 두 개의 선택 항목이 모두 포함되어 있고 동일한 값을 가진 행도 있습니다.

(SELECT `foo` 
 FROM `table`
 WHERE `bar` = 'abc'
 LIMIT 1000)
UNION ALL 
(SELECT `foo` 
 FROM `table`
 WHERE `bar` = 'def'
 LIMIT 1500)

언급URL : https://stackoverflow.com/questions/43798219/strange-behaviour-of-mariadb-when-using-limit-in-combination-with-union

반응형