TIP게시판

제목 sql select 쪼~~~금 더 빠르게 만드는 팁
글쓴이 kaido 작성시각 2016/04/21 14:54:53
댓글 : 4 추천 : 2 스크랩 : 0 조회수 : 14591   RSS

오늘 우연찮게 검색 도중에 찾게 된 팁입니다.

[사실은 다른거 찾고 있던 도중이었는데 흠흠]

 

단순 select 문을 조~~~금 더 빠르게 만드는 비기입니다.

 

가령 테이블에 1만건 정도 밖에 안들어 있다고 치죠.

SELECT * FROM tb_member WHERE id <= 1000000 LIMIT 1000000

SELECT * FROM tb_member LIMIT 1000000

 

이것의 차이는?

 

동일하게 데이터를 1만건 가져올 겁니다. [리미트 이하의 데이터를 가지고 있으니]

실제 쿼리속도 차이도 그리 안나요.  [1만건 정도야 뭐..]

그나마 전자가 쪼오오끔 더 빠르긴 합니다.

 

그런데 explain 을 태워 보면 생각과 다릅니다.

id    select_type    table    type    possible_keys    key    key_len    ref    rows    Extra

1    SIMPLE    tb_member    range    PRIMARY    PRIMARY    8    \N    6693    Using where

 

id    select_type    table    type    possible_keys    key    key_len    ref    rows    Extra

1    SIMPLE    tb_member    ALL    \N    \N    \N    \N    13387    

 

차이가 느껴지시나요?

where 절이 무의미한 조건이라고 해도 끼는 순간 인덱스를 타워 버립니다.

limit 만 넣으면 인덱스를 태우지 않습니다.

 

요약하면 이건 검색 조건의 타입 차이군요.

 

이상 500원도 아까운 간단 팁이었습니다. 

 

 

 

 

 

 다음글 [수정] POST 값 전체를 간단히 검증을 하고 vie... (4)
 이전글 특정경로에서 csrf 끄기.. (5)

댓글

육사시미 / 2016/04/21 16:18:25 / 추천 0

간단하지만 좋은 팁이네요.

배강민 / 2016/04/22 07:40:59 / 추천 0
알면서도 보통 부하가 터져야 튜닝하는 부분인데, 잘 짚어주셨네용
꽈찌쭈 / 2016/07/04 11:29:42 / 추천 0

저같은 경우는 SELECT * FROM tb_member WHERE id > 0 

이런식으로 많이 사용합니다

kaido / 2016/07/04 11:36:53 / 추천 0

@꽈찌쭈

네 맞아요. 조건은 뭐가 붙든 상관없습니다. 그냥 무의미한 조건절이 하나 붙으면 됩니다.

그리고 조건절이 하나 기본으로 붙어있으면 조건에 따른 AND 절을 붙이기 쉬워지죠.