인덱스
는 자주 조회하는 컬럼에 적용해서 조회 시간을 단축시키는 데에 쓰인다.
다만 데이터가 긴 경우 (ex. url)에는 인덱스를 사용하지 않고
데이터를 해시로 만들어서 인덱스를 짧게 만들어 사용하는 게 좋다.
Index 에는 종류가 여러 가지 있다.
- PRIMARY KEY
: 기본키
: 중복되지 않는 유일한 키
: 테이블 당 기본키 하나 지정 가능
: where 문에서 데이터 가져올 때 가장 빠르게 조회할 수 있다.
- NORMAL KEY
: 중복을 허용하는 인덱스
: 조회 시 primary, unique 보다 속도가 느린 편 (인덱스 걸지 않은 컬럼보다 빠르게 조회)
: 한 테이블에 여러 개 지정할 수 다.
- UNIQUE KEY
: 유니크
: 중복을 허용하지 않는 유일한 키
: 한 테이블에 여러 개 지정할 수 있다.
: 상대적으로 고속으로 데이터를 가져올 수 있다.
- FOREIGN KEY
: 외래 키
: 다른 테이블과의 관계성을 부여하는 키
- FULL TEXT
: 자연어 검색
: MySQL의 기본설정(ft_min_word_len)이 4로 되어있기 때문에 최소 네 글자 이상 입력하거나, 이 값을 조정해야 한다.
: MyISAM(마이아이삼) 에서만 지원
>> MyISAM : MySQL 에서 사용하는 스토리지 엔진. 데이터를 저장하는 방식 중 하나.
사용 방법
: '영문과에' 문자열을 포함하는 introduction 컬럼을 조회
SELECT introduction
FROM student
WHERE MATCH(introduction) AGAINST('영문과에');
* where 절에 저렇게 조건을 주는 경우
해당 컬럼에 대해 Full-Text 검색이 유효한 행만 반환하라는 뜻

ex)
CREATE TABLE `student` (
`id` int(3) NOT NULL AUTO_INCREMENT,
`name` char(4) NOT NULL,
`address` varchar(50) NOT NULL,
`number` char(255),
`department` enum('국문과', '영문과', '수학과', '컴퓨터공학과') NOT NULL,
`introduction` text NOT NULL,
PRIMARY KEY(`id`),
UNIQUE KEY `idx_number` (`number`) USING BTREE,
KEY `idx_department` (`department`),
KEY `idx_department_name` (`department`,`address`),
FULLTEXT KEY `idx_introduction` (`introduction`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
- id 컬럼을 기본키로 지정
- `idx_number` 라는 이름으로 `number`컬럼을 유니크 키로 지정
- `idx_department`라는 이름으로 `department`컬럼을 normal 키로 지정
- `idx_department_name`라는 이름으로 `department` 컬럼과 `address` 컬럼 두 개를 하나의 normal 키로 지정 = 중복키
- FULLTEXT 사용할 때는 엔진을 MyISAM으로 지정해야 함. `introduction`을 FULL TEXT 로 지정
- 인덱스를 이용해서 중복키를 지정할 수 있다.
: 하나의 키에 여러 개의 컬럼을 포함
사용 방법
: department 컬럼과 address 컬럼을 조회하는 경우 중복키로 지정해두면 빠르게 조회할 수 있다.
SELECT * FROM student WHERE department='국문과' AND address='제주'
기본키 지정하는 방법
1. 아래에 따로 쓰는 방식
CREATE TABLE member (
id INT,
name VARCHAR(50),
PRIMARY KEY (id)
);
2. 컬럼 옆에 바로 쓰는 방식
CREATE TABLE member (
id INT PRIMARY KEY,
name VARCHAR(50)
);
3. 테이블 생성 후에 기본키 추가할 때
ALTER TABLE member
ADD CONSTRAINT uk_member_email UNIQUE (email);
'웹 개발 > DB' 카테고리의 다른 글
| [MiriaDB] IDE(IntelliJ)환경에서 DB insert 하기 (0) | 2025.05.15 |
|---|---|
| [MariaDB] DB 연동 (0) | 2025.05.15 |
| [MariaDB] DBeaver , IntelliJ이용한 DB 연결 (0) | 2025.05.14 |