공부용 블로그

MySql index 본문

설계/RDBMS

MySql index

tomato212 2018. 11. 21. 23:26

MySql Index


인덱스는 특정 칼럼의 값을 빨리 찾는 것과 동시에 행들을 찾기 위해 사용된다. 

인덱스가 없다면 관련된 row를 찾기위해 테이블 전체를 처음부터 끝까지 검색해야 한다.

만약 테이블이 어떤 질문에 대한 인덱스를 가지고 있다면 모든 데이터를 찾아볼 필요 없이 데이터 파일의 위치를 빨리 찾을 수 있다. 이것은 모든 행들을 순차적으로 읽는것보다 훨씬 빠르다.


대부분의 Mysql 인덱스는 B-tree 구조로 저장된다. 

예외 : 특별한 데이터 타입은 R-tree 사용, 메모리 테이블은 hash Indexs를 지원한다; InnoDB는 FullText Indexs를 위해 거꾸로 된 목록을 사용한다


MySql이 Index를 사용하는 경우 :


- WHERE절에 맞는 row를 찾을 때

- 고려사항에서 제거하기 위해. 복수의 인덱스에서 선택하는 경우에는 가장 적은 수의 rows를 찾는 인덱스를 사용한다.(the most selective index)



SQL Server Index


인덱스 종류


- Hash


- Memory Optimized Nonclustered


- Clustered


- NonClustered


- Unique


- Columnstore


- Index with included column


- Index on computed column


- Filtered


- Spatical


- XML


- Full Text



Maria DB 인덱스 종류 ('key'와 'index'는 바꿔 사용할 수 있음)


https://mariadb.com/kb/en/library/getting-started-with-indexes/


- Primary key


- Unique key


- Plain Indexes


- Full-Text indexes


PostgreSQL DB 


https://www.tutorialspoint.com/postgresql/postgresql_indexes.htm


- B tree

partical indexes : 조건에 맞게 인덱스 생성

indexes on expressions : 함수 등을 사용한 컬럼에 인덱스 생성



- Hash


- GiST


- SP-GiST


-GIN
























'설계 > RDBMS' 카테고리의 다른 글

RDBMS 벤치마크 Jmeter 세팅하기  (0) 2018.11.30
clustered index test  (0) 2018.11.30
mysql 아키텍처 질문  (0) 2018.11.14
In-Data Computing  (0) 2018.11.05
페이지 알고리즘  (0) 2018.11.04