데이터베이스 인덱싱이란 무엇이며 작동 방식

1601 단어 sqldatabasepostgres
수십만 개의 단어가 포함된 사전 책이 있다고 가정해 보겠습니다. 이제 'tenebrous'라는 단어의 의미를 찾아야 할 수도 있습니다. 당신은 무엇을 할 것인가? tenebrous를 찾을 때까지 첫 페이지부터 검색할 것입니까, 아니면 사전 책에서 't' 색인을 검색하고 'tenebrous'의 의미를 찾기 위해 다른 모든 단어를 건너뛸 것입니까?

데이터베이스의 인덱싱은 사전 책의 인덱싱과 동일한 개념을 사용합니다.

수백만 명의 사람의 이름과 성을 포함하는 수백만 개의 행이 있는 데이터베이스에 Person이라는 테이블이 있다고 가정합니다. 예를 들어 다음은 유사한 테이블의 그림입니다.


ID
이름



1
아메드 아메드


2

커란



요르단

4
제니
스톡스

5
로버트
클라크

6
패트릭
커민스

.
...
...

1000000
루크
라이트


이제 인덱싱 없이 이름이 'Sean'인 사람을 검색하는 쿼리를 수행하면 SQL 쿼리는 이 간단한 작업을 수행하기 위해 100만 개의 행을 모두 조회합니다. 이제 데이터가 천만 행으로 확장될 때 이러한 간단한 쿼리가 얼마나 비용이 많이 들 수 있는지 생각해 보십시오. 이것은 다른 백만 개의 레코드가 있는 다른 테이블을 조인할 때 훨씬 더 비쌉니다.

따라서 이 문제를 해결하기 위해 데이터베이스 인덱스가 도움이 됩니다. 인덱싱은 쿼리 성능을 최적화하고 대규모 레코드에서 검색하는 데 도움이 되도록 정렬된 순서로 열을 설정합니다.

예를 들어 위의 Persons 테이블에서 first_name에 대한 인덱스를 생성하는 경우 다음 SQL 쿼리로 수행할 수 있습니다.

create index person_index on persons("first_name");


그런 다음 데이터베이스에 person_index라는 별도의 인덱스를 만들고 Person 테이블의 first_name 열을 정렬된 순서로 저장합니다. 마찬가지로 인덱스는 first_name과 함께 해당 열의 메모리 주소도 저장하므로 검색 작업이 수행될 때 동일한 행의 다른 열에서 데이터를 조회합니다.

이제 Persons 테이블에서 사람 이름 'Sean'을 검색하면 사람이 사전에서 검색하는 것처럼 'S'와 일치하는 단어만 조회하고 다른 단어는 건너뜁니다. 이를 통해 불필요한 검색을 건너뛸 수 있고 데이터베이스 성능을 높일 수 있습니다.

이것이 누군가를 돕기를 바랍니다.
고맙습니다.

좋은 웹페이지 즐겨찾기