네, MySQL에서 ORDER BY NULL을 사용할 수 있습니다. 다만 버전에 따라 그 의미와 필요성이 달라진다는 점에 유의해야 합니다.
ORDER BY NULL이란?
참고: MySQL 5.7 이전 버전에서는 ORDER BY NULL이 결과를 정렬하지 않고 그대로 반환하도록 하여 불필요한 정렬 비용을 줄이는 데 유용했습니다. 하지만 MySQL 8.0부터는 쿼리 마지막에 ORDER BY NULL을 명시해 암시적 정렬(implicit sorting)을 억제할 필요가 없어졌습니다. 즉, 최신 버전에서는 이 구문이 더 이상 성능 최적화 목적으로 권장되지 않습니다.
예제 테이블 생성
먼저 예제로 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
-> (
-> Name varchar(10)
-> );
Query OK, 0 rows affected (1.01 sec)
데이터 삽입
INSERT 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('Bob');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('Sam');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable values('Mike');
Query OK, 1 row affected (0.13 sec)저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
출력 결과
위 쿼리는 아래와 같은 결과를 반환합니다.
+-------+
| Name |
+-------+
| John |
| Bob |
| David |
| Sam |
| Mike |
+-------+
5 rows in set (0.00 sec)
ORDER BY NULL 적용하기
다음은 MySQL에서 ORDER BY NULL을 실제로 사용하는 방법입니다.
mysql> select *from DemoTable order by NULL;
출력 결과
실행하면 아래와 같은 출력을 확인할 수 있습니다.
+-------+
| Name |
+-------+
| John |
| Bob |
| David |
| Sam |
| Mike |
+-------+
5 rows in set (0.00 sec)
정리
ORDER BY NULL은 문법적으로 유효한 구문이며 오류 없이 실행됩니다. 하지만 MySQL 8.0 환경이라면 굳이 사용할 필요가 없으므로, 구버전 코드베이스를 마이그레이션할 때 참고용으로만 기억해 두면 충분합니다.