CREATE [UNIQUE] INDEX 인덱스_이름
on 테이블_이름 (열_이름) [ASC | DISC] # ASC만 주로 쓰인다
* UNIQUE 주의 : UNIQUE를 사용하면, 그 열에는 중복이 허용되지 않는다는 것이다.
ex) 주민등록번호 : 중복 x, 이메일 : 가능
+ 현재 중복 없다고 해서 UNIQEU로 무작정 만들면 X : 이름 같은 경우 겹치는 것
없다고UNIQUE로 만들었다가 차후 같은 이름 회원가입할 때 문제가 생길 수 있다.
ANALYZE TABLE member; -- 지금까지 만든 인덱스를 모두 적용
이를 통해 적용을 시키고, SHOW INDEX FROM member로 확인한다.
DROP INDEX 인덱스_이름 ON 테이블_이름
DROP INDEX idx_member_mem_name ON member;
DROP INDEX idx_member_addr ON member;
DROP INDEX idx_member_mem_number ON member;
SELECT * FROM member; -- 전부 조회하기에 인덱스 쓰지 않음
인덱스를 사용하기 위해서는 WHERE 절을 사용해야 한다!!!
SELECT mem_id, mem_name, addr
FROM member
WHERE mem_name = '여자친구';
오잉 얘는 Full Table Scan을 하네?!?!
인덱스를 사용해서 검색하려면, WHERE절에 어떠한 가공도 해서는 안 된다!!
SELECT mem_name, mem_number
FROM member
WHERE mem_number*2 >= 14;
따라서 이런 방식으로 바꿔줘야 한다!!
SELECT mem_name, mem_number
FROM member
WHERE mem_number >= 14/2;
- 프라이머리 키 제거!
ALTER TABLE member
DROP PRIMARY KEY;
-> 만약 연결되어 있는 테이블이 존재하여, 지워지지 않는다면?
: 외래키를 먼저 제거하고 이후에 프라이머리 키를 제거한다!
아래와 같은 방식으로 우선 이름을 찾고 (constraint_name에 해당하는)
이에 맞는 외래키를 제거한다!
SELECT table_name, constraint_name
FROM information_schema.referential_constraints
WHERE constraint_schema = 'market_db';
- 외래키 제거
ALTER TABLE buy
DROP FOREIGN KEY buy_ibfk_1;
- 기본 키(PRIMARY KEY) 제거
ALTER TABLE member
DROP PRIMARY KEY;