create 문을 사용할 때 사용하면 좋은 점 몇 가지 조언 받았다.
- timestamp
날짜를 등록하는 날짜 column을 작성할 때
`today` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'
`today_update` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'
이런 식으로 작성하여 insert/update 시 column 에 하나씩 넣어줬는데
`today` timestamp NOT NULL DEFAULT current_timestamp()
`today_update` timestamp NOT NULL DEFAULT current_timestamp()
이렇게 쓰면 최초 로우 생성 시에 today에 현재 시간을 자동으로 넣고,
해당 로우 update 시에 'today_update' 가 현재시간으로 자동으로 변경된다.
insert/update 시에 따로 column 에 데이터를 넣지 않아도 된다고 한다.
- index
그리고 index를 걸 때
KEY `no` (`no`) USING BTREE
USING BTREE를 쓰지 않아도 자동으로 걸어준다고 한다.
따라서,
KEY `no` (`no`)
이렇게 작성해도 된다고 한다.
insert 할 때 BTREE 어디에 넣어줄지 정한 후에 값을 넣어주고, select할 시 그 BTREE를 찾아온다고 한다.
인덱스를 사용할 때 주의할 점으로,
조회할 컬럼에만 인덱스를 걸어주는게 좋은데
특정 Key를 조회하려고 할 때 인덱스가 없으면 select 할 때 성능 저하가 되고,
불필요한 컬럼에 인덱스가 걸려있으면 insert 할 때 성능저하가 일어난다고 한다.
그렇게 큰 저하는 아니지만, 데이터가 많이 쌓이다보면 하나라도 줄여 성능을 높이는게 좋으니까
최종 create 문을 예시로 들자면
CREATE TABLE test_tbl (
`no` int(10) not null,
`today` timestamp NOT NULL DEFAULT current_timestamp(),
`today_update` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
KEY `no` (`no`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4 ;
이 정도 일 듯
728x90
'Database' 카테고리의 다른 글
[Mysql] on duplicate key update (0) | 2023.08.24 |
---|---|
슬레이브(Slave)란? (0) | 2022.11.24 |
MySQL 인덱스 (0) | 2022.09.02 |
Query Between 과 >=, <= 성능 차이 (2) | 2022.08.24 |
쿼리 Query 최적화 및 튜닝 (0) | 2022.08.23 |