MySQL INTERVAL() 함수에서 숫자를 오름차순으로 정렬해야 하는 이유
MySQL의 INTERVAL() 함수는 첫 번째 인수로 전달된 숫자보다 큰 값을 찾을 때 내부적으로 이진 탐색(Binary Search) 알고리즘을 사용합니다. 이진 탐색은 데이터가 미리 정렬되어 있어야만 정확하고 빠르게 동작하는 알고리즘이기 때문에, INTERVAL() 함수가 효율적으로 작동하려면 두 번째 인수부터 나열되는 숫자 목록이 반드시 오름차순으로 정렬되어 있어야 합니다.
만약 숫자들이 무작위 순서로 나열되면 이진 탐색 과정에서 비교 기준이 깨져 잘못된 결과를 반환하거나 탐색 성능이 크게 저하될 수 있습니다. 따라서 INTERVAL() 함수를 사용할 때는 항상 숫자 목록을 작은 값부터 큰 값 순서로 배치하는 것이 좋습니다.
올바른 사용 예시
다음은 INTERVAL() 함수를 올바르게 사용한 예입니다.
mysql> Select INTERVAL(50,20,32,38,40,50,55);
위 쿼리에서 두 번째 인수부터 나열된 숫자들(20, 32, 38, 40, 50, 55)은 오름차순으로 정렬되어 있습니다. 이 경우 함수는 첫 번째 인수인 50과 각 값을 비교하여, 50보다 작거나 같은 마지막 값의 위치에 해당하는 인덱스를 결과로 반환합니다. 이처럼 정렬된 목록을 전달하면 이진 탐색이 최적의 성능으로 수행되어 빠르고 정확한 결과를 얻을 수 있습니다.