테스트 사이트 - 개발 중인 베타 버전입니다

[DB 질문] auto increment 값으로 검색과 index 건 id 값의 검색의 속도차이 채택완료

카카오툴즈 10년 전 조회 4,862

[DB 질문] auto increment 값으로 검색과 index 건 필드값의 값의 검색의 속도차이가 있는지요? 

 

자료량은 1천만건이요.

 

저희 팀장님은 인덱스를 필드를 걸면 auto increment 로 한것과 동일한 결과가 나온다는데

전 아닌것으로 알고있어서요.

 

혹시 아시는 분 계신가요?

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
10년 전
Pk 와 달리 index&amp;nbsp; 을 건 필드에 중복값이 존재한다면<br />
확실하게 속도 차이가 납니다.<br />
<br />
Mysql&amp;nbsp; 내부구조을 잊어먹어서 같은 파일안에 pk 와 index 정보를 같이 보관하는지 기억이 가물가물해서 ..<br />
<br />
Mysql&amp;nbsp; 의 경우<br />
Innodb,&amp;nbsp; myisam 이냐에 따라서도&amp;nbsp; index 속도가 틀리구요.<br />
<br />
즉, 차이가 있는게 맞는걸로 알고 있고, pk 와 index&amp;nbsp; 둘다 유일키라 하더라도 내부는 다르게 움직인다라고 기억하고 있습니다.<br />
<br />
혹시나 싶어 적는데 pk&amp;nbsp; 에 별도의 index&amp;nbsp; 을 주실 필요는 전혀없습니다..본글에 적으신 레코드을 조회할시 느리다면 쿼리 튜닝으로 해결하세요<br />
<br />
추가..저의 기억이 맞네요.<br />
그림이 있는데 지금 못찾아서<br />
아래 링크를 보시구요..db 마다 큰 시각으로 봤을때 내부 처리 흐름이&amp;nbsp; 차이가 있습니다.<br />
Db&amp;nbsp; 파서쪽으로 찾아보세요.<br />
<br />
아래는 innodb 의 경우입니다.<br />
<br />
<a href="http://intomysql.blogspot.kr/2010/12/innodb.html?m=1" target="_blank" rel="noopener noreferrer">http://intomysql.blogspot.kr/2010/12/innodb.html?m=1</a><br />
<br />
<a href="http://i.stack.imgur.com/9EcRi.jpg" target="_blank" rel="noopener noreferrer">http://i.stack.imgur.com/9EcRi.jpg</a>
로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

10년 전

경우에 따라서 auto increment 가 걸린게 더 빠릅니다. (order by 포함)

 

커버링 인덱스도 사용할수 있고,

 

그래서 auto increment​ 가 없는 테이블이라도 가급적 auto increment  필드를 넣는게 좋아요.

(테이블에  auto increment 가 없으면, mysql이 내부적으로 하나 만들어서 씁니다. 내부에서 만들어서 쓰는거니, 사용자는 사용할수가 없죠... 어짜피 만들어질거, 사용자가 직접 만들어두는게 이득)

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

10년 전

워낙 유명고수분이라 쉽게 답달기가 겁나네요. ^^;

잘은 모르지만, 벤지님 답변에 숟가락 하나 얹어봅니다. ^^

 

http://stackoverflow.com/questions/14175627/does-a-primary-key-speed-up-an-index">http://stackoverflow.com/questions/14175627/does-a-primary-key-speed-up-an-index 

 

그냥 생각해보면, index에는 중복값이 허용되기에 조금의 차이가 있을것 같고,

위에 따라면, pk에는 null값이 불허되어, NOT NULL 최적화 (이게 엔진 레벨인지, 쿼리를 그렇게 하라는 건지는 모르겠네요.. ^^;) 가 가능하다고 하네요.

 

그리고, 벤지님 말씀대로, innodb의 경우, pk 필드는 물리적으로 정렬저장되어 훨씬 빠른 검색이 가능한것 같네요. ^^

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

10년 전

auto increment 속성을 줄 수 있는 것은 PK만 되요.

 

pk는 index , unique 속성을 가지고 있어요

 

결론 적으로 index와 같은 것이에요.

 

데이터베이스 기초 이론인데요....  데이터베이스를 배운적이 없나 봐요~~~~^^

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인