DB 인덱스는 데이터베이스에서 데이터 검색 속도를 빠르게 하기 위해 사용되는 데이터 구조다. 특정 열(컬럼)의 값을 기준으로 정렬해 둔 목록이라고 볼 수 있다. 이 인덱스를 사용하면 데이터베이스는 테이블 전체를 처음부터 끝까지 찾아보지 않고도 빠르게 원하는 데이터를 찾을 수 있다.
예를 들어, 책 뒤에 있는 색인(index)을 생각해보면 이해가 쉽다. 책의 색인을 사용하면 원하는 정보를 책 전체를 훑어보지 않고도 빠르게 찾아낼 수 있다. DB 인덱스도 비슷하게 작동한다. 특정 데이터를 찾을 때, 인덱스가 있으면 데이터베이스는 인덱스를 먼저 확인해 어디에서 데이터를 찾아야 할지 빠르게 알 수 있다.
그러나 인덱스는 데이터 검색 속도를 향상시키는 대신, 추가적인 저장 공간을 사용하고, 데이터를 삽입하거나 수정할 때 추가 작업이 필요해 성능에 영향을 줄 수 있기 때문에 신중하게 사용해야 한다.
DB 인덱스는 SQL 기반의 관계형 데이터베이스(RDBMS)와 NoSQL 데이터베이스 모두에서 사용될 수 있다. 각 데이터베이스 유형에 따라 인덱스의 구현, 관리 방법, 최적화 전략 등이 다를 수 있다.
SQL 데이터베이스에서 인덱스는 테이블의 하나 이상의 컬럼에 적용되어 데이터 검색 속도를 향상시킨다. 대표적으로 B-트리(B-Tree) 인덱스가 널리 사용된다. 관계형 데이터베이스에서 인덱스는 SELECT 쿼리의 WHERE 절, JOIN 연산 등에서 데이터 검색 시간을 줄이기 위해 주로 사용된다.
NoSQL 데이터베이스는 키-값 저장소, 문서 지향 데이터베이스, 컬럼 패밀리 데이터베이스, 그래프 데이터베이스 등 다양한 형태가 있다. NoSQL 데이터베이스도 데이터 검색 성능을 향상시키기 위해 인덱스를 사용한다. 예를 들어, 문서 지향 데이터베이스인 MongoDB에서는 문서의 특정 필드에 인덱스를 생성하여 쿼리 성능을 개선할 수 있다.
SQL 문에서 발생한 오류 Error Code: 1064는 SQL 구문에 문법 오류가 있음을 나타낸다. 특히 DB 외적인 프로그래밍을 많이 하다가 스키마(데이터베이스)를 정의할 때 작은따옴표(') 대신에 백틱(`)을 사용해야 하는 것을 주의하지 않아 자주 발생한다.
예를 들어, CREATE SCHEMA 'mydatabase' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;를 쳤다고 하자 'mydatabase'는 작은 따옴표다.
그럼 0 4 21:31:56 CREATE SCHEMA 'mydatabase' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''mydatabase' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci' at line 1 0.000 sec 에러가 뜰 것 이다.
그러면 작은 따옴표를 백틱으로 바꿔주면 된다. 그리고 일부 버전의 mySQL에선 SCHEMA 대신 DATABASE 키워드를 더 선호할 수도 있으니
CREATE DATABASE `mydatabase` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
로 바꾸는게 좋다. 이 구문은 mydatabase라는 이름의 데이터베이스를 생성하며, 기본 문자 세트로 utf8mb4를, 정렬 순서로 utf8mb4_general_ci를 설정한다. utf8mb4는 이모지를 포함한 다양한 유니코드 문자를 지원하기 때문에, 다국어 데이터를 처리하는 애플리케이션에 적합하다.
++
MySQL에서 Error Code: 1007은 데이터베이스가 이미 존재할 때 발생하는 오류다. mydatabase가 이미 존재하기 때문에 같은 이름으로 데이터베이스를 다시 만들 수 없다. 데이터베이스가 이미 존재하는지 확인하거나, 새로운 이름으로 데이터베이스를 생성해야 한다. 이미 존재하는 데이터베이스에 테이블을 추가하려면, 해당 데이터베이스를 선택하고 필요한 SQL 명령을 실행하면 된다.
ex)
DROP DATABASE mydatabase;
CREATE DATABASE `mydatabase` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
'데이터 > SQL' 카테고리의 다른 글
MySQL 데이터베이스에 저장된 데이터 확인하기 (0) | 2024.04.09 |
---|---|
MySQL 테이블, user 정의 및 PATH 설정 (0) | 2024.04.08 |