티스토리 뷰

2탄 보고 오시죵

https://uchive.tistory.com/48

 

[MySQL] 표준 프로세스대로 개발하기 (2)

2탄입니당 1탄 보고 오시죵https://uchive.tistory.com/47 [MySQL] 표준 프로세스대로 개발하기 (1)최종목표:디비 개발하는 프로세스에 따라 개발을 해보겠습니다.나라, 상점, 고객, 브랜드, 상품 테이블을

uchive.tistory.com

 

오늘은 실제 MySQL 서버에 테이블을 구성하고 더미데이터를 넣어보겠습니다!

 

 

제가 만들어놓은 연습용 데이터베이스가 있는데,

아무짝에도 쓸모없고 데이터도 없는 테이블이라 모조리 날려주겠습니다.

(사용하는 dev 계정이 dev 테이블에만 권한이 있어서..*^^*.. 귀찮았습니당)

 

-- 현재 DB 확인
SELECT DATABASE();

-- 모든 테이블 이름 가져오기
SET @tables = NULL;
SELECT GROUP_CONCAT(table_name) INTO @tables
FROM information_schema.tables
WHERE table_schema = DATABASE();

-- 준비된 쿼리로 DROP
SET @tables = CONCAT('DROP TABLE IF EXISTS ', @tables);
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

 

 

2탄에서 만든 물리 설계를 통해 테이블을 생성합니다

아래 이미지와 같은 결과를 보실 수 있습니다

 

테이블 생성 결과

 

지점 테이블
고객 테이블

 

 

 

 

 

찐 인덱싱 하기!!

 

이렇게 테이블을 만든 후에 인덱싱을 해보겠습니다.

 

1. 상품테이블에서 상품 이름은 검색이 잦다.

2. 주문_상품테이블에서 상품 검색과 고객 검색으로 인해  조인/검색이 필요하다. 

CREATE INDEX idx_goods_name ON goods(goods_name);

CREATE INDEX idx_purchase_customer ON purchase_goods(customer_id);
CREATE INDEX idx_purchase_goods ON purchase_goods(goods_id);
CREATE INDEX idx_purchase_customer_goods ON purchase_goods(customer_id, goods_id);

 위와 같은 코드를 적용해보겠습니다.

 

 

 

 

구문을 통해 인덱스 구조를 봅니다.

컬럼마다의 의미를 알아봅시다. 더 자세히 파악하기 위함..

SELECT INDEX FROM [테이블명];

 

Table 인덱스가 속한 테이블 이름
Non_unique 0이면 유니크 인덱스, 1이면 중복 허용 인덱스(일반 인덱스)
Key_name 인덱스 이름 (PRIMARY는 기본키)
Seq_in_index 인덱스 내 컬럼 순서 (복합 인덱스일 때 1,2,3…으로 순서 표시)
Column_name 인덱스가 걸린 컬럼 이름
Collation 컬럼 정렬 순서

 

 

다음은 더미데이터 생성 후에 성능 확인을 해보겠습니다~~!!
테스트를 위해 비교군이 필요하긴 하겠네요.. 이만~~