데이터베이스 인덱스, 사용 시 주의하세요!
This is my current understanding of Database Index.
If there is any mistake that write that lead to misunderstanding, please let me know and I will update this post ASAP.
시작하자 🚀
데이터베이스 색인이란 무엇입니까?
데이터베이스 인덱스는 데이터베이스 내부의 데이터를 검색하는 데 도움이 되는 기본 제공 도구입니다. 인덱스는 쿼리 기록을 빠르게 찾습니다.
문제
이해를 돕기 위해 몇 가지 사용 사례를 만들어 보겠습니다. 예를 들어
id, full_name & gender
가 있는 사용자 테이블이 있습니다.해당 사용자 테이블에는 1000개의 행이 있습니다. 그 중 2명은 남성이고 나머지(998명)는 여성입니다.
남성 사용자를 찾아야 한다고 가정하면 다음과 같은 쿼리를 생성합니다
SELECT * FROM users WHERE gender = 'male'
.해당 쿼리를 실행한 후 사용자 2명의 결과를 얻게 됩니다.
이면에서 데이터베이스 엔진은 1000개의 행을 모두 검색하여 2개의 행을 찾습니다.
예, 비효율적으로 들립니다. 그러나 이것이 데이터베이스 엔진이 작동하는 방식입니다. 😵
해결책은 무엇인가?
해결책은 데이터베이스 색인을 사용하는 것입니다. 💡
인덱스를 사용하면 데이터베이스 엔진이 선택한 인덱스를 기반으로 테이블을 매핑하는 일부 알고리즘을 만듭니다.
좋아요, 그래서 우리는 users 테이블 안에
gender
컬럼에 인덱스를 생성합니다.다시 쿼리로 돌아가서
SELECT * FROM users WHERE gender = 'male'
를 실행하면 결과적으로 다시 2명의 사용자를 얻게 됩니다(물론!).차이점은 바로 지금 데이터베이스 엔진이 2개의 행을 검색하여 해당 2개의 행을 찾는다는 것입니다.
이제 그 소리가 효율적입니다❗
하지만 기다려...
알고 나면 다음과 같은 생각이 있을 수 있습니다.
"let's create index for all of our column, so we can get quick result every time we search something 🤔"
맞습니다. 검색할 때마다 빠른 검색어를 얻을 수 있습니다.
그러나 그것을 과도하게 사용하지 마십시오. Index가 상승세를 보이더라도 Index도 하락세를 보입니다.
인덱스를 만들면 장면 데이터베이스 엔진이 데이터베이스에 추가 데이터를 기록합니다.
다시 사용자 테이블로 돌아가 보겠습니다. 계산은 다음과 같습니다.
2 index (1 for ID, 1 for gender) * 1000 rows = 2000
# PK is always get index
모든 열에 인덱스를 넣는다고 상상해보십시오.
4 index (ID, gender, full_name, created_at) * 1000 rows = 4000
# Thats only 4 columns.
# The more column we create, the more usage it will take when CREATE, UPDATE, DELETE, etc.
결론은 현명하게 사용하시기 바랍니다. 😇
보너스: 인덱스 생성 방법
CREATE TABLE "customers" (
"id" SERIAL PRIMARY KEY,
"gender" varchar,
"full_name" varchar,
"created_at" timestamp
);
CREATE INDEX ON "customers" ("gender");
CREATE TABLE `customers` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`gender` varchar(255),
`full_name` varchar(255),
`created_at` timestamp
);
CREATE INDEX `customers_index_0` ON `customers` (`gender`);
Reference
이 문제에 관하여(데이터베이스 인덱스, 사용 시 주의하세요!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/frasnym/database-indexes-please-be-careful-when-using-it-2j28텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)