그런데 갑자기 이름을 탐색해야 하는 상황이 왔다고 합시다. 레코드는 1만 개 정도 된다고 하죠. 그렇다면 모든 레코드에서 선형 탐색을 해야 하니 O(n)이 걸릴 것입니다. 게다가 레코드를 하드 디스크에서 가져와야 하지요. 이름에서도 B 트리를 만들어 검색 속도를 향상시킬 수 없을까요? 있습니다. 이름에 대해서 인덱스를 생성하면 됩니다. 그럼 이름을 키로 B 트리를 구성합니다.
코드 10-8은 인덱스를 생성하는 SQL입니다.
코드 10-8
MariaDB [mydb]> CREATE INDEX idx_name
-> ON example(name);
인덱스 idx_name을 테이블 example의 컬럼 name에 대해 생성한 것입니다. 이제 B 트리가 생성되었으니 탐색 속도는 놀랄 만큼 향상될 것입니다.
코드 10-9는 이름이 ‘이순신’인 데이터를 탐색하는 SQL입니다.
코드 10-9
MariaDB [mydb]> SELECT * FROM example
-> WHERE name LIKE '이순신';
+----+--------+
| ID | name |
+----+--------+
| 2 | 이순신 |
+----+--------+