인덱스(index)
- 테이블의 동작속도(조회)를 높여주는 자료구조
- MYI(MySQL Index)파일에 저장
- 인덱스를 설정하지 않으면 Table full Scan이 일어나 성능이 저하되거나 장애가 발생할 수 잇음
- 조회속도는 빨라지지만 update,insert,delete의 속도는 저하될 수 있음
- MySQL에서는 primary key,unique 제약조건을 사용하면 해당 컬럽에 index가 적용됨0
- 인덱스는 하나 또는 여러 개의 컬럼에 설정할 수 있음
- where 절을 사용하지 않고 인덱스가 걸린 컬럼을 조회하면 성능에 아무런 효과가 없음(where절을 위함)
- 가급적 update가 안되는 값을 설정하는 것이 좋음
-> 성능상 update가 자주되는 것을 설정하면 MYI 파일과 값 모두 바꿔야 하기 때문에 성능이 저하된다.
●index의 효과가 없는경우
order by, gruop by 와 index
- order by 인덱스컬럼,일반컬럼: 복수의 키에 대해 order by를 사용한 경우 /효과 없음
- where 컬럼1 ='값' order by 인덱스컬럼: 연속하지 않은 컬럼(중간의 데이터가 빈 데이터잇을때)에 대해 order by를 실행한 경우 /효과 없음
- order by 인덱스 컬럼1 desc,인덱스컬럼2 asc : desc asc 혼합해서 사용할 경우 / 효과 없음
- group by 일반컬럼1 order by 인덱스컬럼 : group by 와 order by의 컬럼이 다른경우/효과없음
- order by 함수(인덱스컬럼) : order by 절에 컬럼이 아닌 다른 표현을 사용한 경우
●인덱스
생성
create index 인덱스명 on 테이블이름(필드이름)
create index 인덱스명 on 테이블명(필드이름1,필드이름2,...)
조회
show index from 테이블명;
삭제하기
alter table 테이블명 drop index 인덱스명;
'코딩공부 > DBMS' 카테고리의 다른 글
| CSS_그룹 선택자 (0) | 2023.03.28 |
|---|---|
| DBMS(MySQL)_트렌젝션(Transaction) (0) | 2023.03.23 |
| DBMS(MySQL)_뷰(view) (0) | 2023.03.23 |
| DBMS(MySQL)_사용자 설정(사용자 추가,DB권한부여) (0) | 2023.03.23 |
| DBMS(MySQL)_문자열함수 (3) | 2023.03.23 |