인덱스 거는방법등에 관해 icq 로 나눈 대화를 캡춰했습니다.
DB Index 가 생소하시면 참고하세요^^
^SSSoiju^ 오후 4:11 쿼리 안바꾸고 속도 빠르게 할 방법 없을까?
^술병대 오후 4:11 create index ndx_identities_n01 on
identities ( identity );
이거 좀 실행해봐요...
^술병대 오후 4:12 인덱스 생성하는 거....
^SSSoiju^ 오후 4:12 이거 고대로 하면 되?
디비 안날려?
^술병대 오후 4:12 안날리고....
^SSSoiju^ 오후 4:12 겁나
^술병대 오후 4:12 그런거 아닙니다...
^술병대 오후 4:13 그럼 디비파일 복사 해놓은면 되잖아여...
^SSSoiju^ 오후 4:14 create index ndx_identities_n01 on
identities ( identity );
ERROR 1121: Column 'identity' is used with
UNIQUE or INDEX but is not defined as
NOT NULL
^SSSoiju^ 오후 4:14 바꿔볼께
^SSSoiju^ 오후 4:17 했다
^술병대 오후 4:17 alter table add ...
요렇게 했어요???
^SSSoiju^ 오후 4:18 alter table change..
^술병대 오후 4:19 속도 차이 나요???
^술병대 오후 4:19 조금 나아진거 같은데요....
^SSSoiju^ 오후 4:20 후와~~~~~~
조금이 아냐~~~~~~~~~~~~~~~~~~
^술병대 오후 4:20 많이 나아졌나요??? ^^
^SSSoiju^ 오후 4:20 이거 원리가 뭐야?????
^술병대 오후 4:20 경험
^SSSoiju^ 오후 4:20 갈켜도~~~~~~~~~~~~~~~
^SSSoiju^ 오후 4:21 총알이다 총알
^술병대 오후 4:21 내공이 3갑자 정도 되야 알 수 있는 건데요...
^SSSoiju^ 오후 4:21 음....
^SSSoiju^ 오후 4:21 암튼 연구해봐야지...
^SSSoiju^ 오후 4:21 그거 한줄 실행시켰다구 이렇게 바껴???
^술병대 오후 4:22 잘 써면 20년 공력을 1갑자 이상으로 경공을
펼칠수 있지만
잘못 써면 3갑자 공력이 10년 공력도 안나올 수
도 있어요...
^SSSoiju^ 오후 4:22 으음...
그렇겠지...
암튼 좋은 구경 했다
죽인다 죽여
^술병대 오후 4:23 허허...그럼 다른 sql문 보여줘요...
^술병대 오후 4:23 또 만듭시다...
^SSSoiju^ 오후 4:23 다른거 어떤거?
^술병대 오후 4:23 테이블 2개 이상 걸은거...
^SSSoiju^ 오후 4:23 아까 보내준 쿼리는 어떤 테이블에
해당되는거야?
^SSSoiju^ 오후 4:24 이젠 없을껄?
^SSSoiju^ 오후 4:24 그건 영구적인건가?
데몬 죽이면 또 실행시켜줘야 하는건가?
^술병대 오후 4:25 영구...적...
^SSSoiju^ 오후 4:26 테이블 덤프하면 그 인덱스도 같이 덤프되나?
^술병대 오후 4:26 문법
create index index_name on table_name (
원하는 column 들 )
^술병대 오후 4:26 같이 되요...
^SSSoiju^ 오후 4:26 덤프한거 sql 보면 이해가 되겠네?
^술병대 오후 4:27 create index index_name on table_name ( col1
asc, col2 desc )
asc : 오름차순
desc :내림차순
안적으면 오름차순
^SSSoiju^ 오후 4:27 이거 그럼 캐쉬 원린가?
^술병대 오후 4:28 mysql 문서 문법
alter table table_name add index index_name
( column 들 )
^술병대 오후 4:28 캐쉬라 봐도 되요...
^술병대 오후 4:28 물리적으로 생성되죠....
^SSSoiju^ 오후 4:29 그런데 테이블은 안보이구.. 컬럼이 따로
생성되는건가?
^술병대 오후 4:29 아까껀 identities 인가 하는 거에 걸었어요...
^술병대 오후 4:29 그건 안 보이죠...
^SSSoiju^ 오후 4:29 보이질 않는데 덤프에는 따라온다구?
^술병대 오후 4:29 db 자체 관리가 되기 때문이죠...그거 도큐먼트
해야하는 겁니다...잊어 버리면 클나요..
^술병대 오후 4:30 sql 문 또 하나 보내줘요....
^술병대 오후 4:30 보구 만들어야죠...
^SSSoiju^ 오후 4:30 만약에 서버 바꾸고,
덤프한 파일의 sql 문만 끌어와서 디비
옮긴다면..
그때도 상관없이 이 속도 그대로 나게되나?
^술병대 오후 4:30 그렇죠....
^SSSoiju^ 오후 4:31 서버 바꾸면 mysql 이 새로 설치되서 인덱스가
있질 않을텐데?
^술병대 오후 4:31 덤프에 create table 이 있으면 create index
도 같이 있죠...
^SSSoiju^ 오후 4:31 아하~
^술병대 오후 4:32 빨리 보내줘요....
^술병대 오후 4:32 오늘 조금 일찍 갈려구 하거던요...
^술병대 오후 4:32 몇시에 퇴근 할 거요..
^SSSoiju^ 오후 4:32 암때나..
^SSSoiju^ 오후 4:33 찾았어..
PRIMARY KEY (id),
KEY ndx_identities_n01 (identity)
요거네^^
^SSSoiju^ 오후 4:34 각 테이블마다 이거 주면 전부 속도
빨라지는강?
^술병대 오후 4:35 아뇨...아까 이야기 했듯이 적절하게...
^SSSoiju^ 오후 4:35 그렇군.. 언젠가 얘기해줬었지..
오히려 늦어질수도 있다고 들은거같애
^술병대 오후 4:36 오로지 경험..왜냐하면 DB엔진에 관한 자료가
없고 어떤식으로 인덱스를 처리하는지
전부 알 수 가 없으니까요...
^술병대 오후 4:36 공부를 엄청나가 많이
하던가...소스보고...흐흐..
^SSSoiju^ 오후 4:36 음..
대충 뭔지 감이 잡힌다
^술병대 오후 4:36 만들고 실행하고 안좋으면 지우고 다시
하고...그중에 가장 빠른거...
^술병대 오후 4:37 같이 걸려있는 수많은 문장에 골고루 혜택이
가는 인덱스.
^SSSoiju^ 오후 4:37 그렇지..
그런데 인덱스 주는 형식도 그렇게 이것저것
할수 있는가보지?
컬럼 1~ 10 까지 일일이 줘보구 고르고
^술병대 오후 4:38 아뇨...일단 다른거 보내줘요...몇개 보면서
공부해요...
^SSSoiju^ 오후 4:38 인덱스 지우는건 어떻게해?
^술병대 오후 4:38 drop index index_name
^SSSoiju^ 오후 4:38 다른건 테이블 복합된거 없어
^술병대 오후 4:39 그래요??? 그럼 index 더 만들어요...지역, ID
같은거...
학교, ID, 지역...이런씩으로 조합해서...
^술병대 오후 4:40 테이블 하나만 했던거라도 줘요...
^SSSoiju^ 오후 4:40 테이블 하나에 인덱스 여러개 넣어도 괸챦은가?
^술병대 오후 4:40 한 두개 봐줄 께요...
^술병대 오후 4:40 넣어도 되요...
^술병대 오후 4:40 몇개 까지 지원하는 지는 모르지만...한 문장이
동시에 두개씩은 안 써요...
^술병대 오후 4:41 문장에 따라 인덱스를 써서 느려질 경우도
있어요..이때 인덱스를 못 쓰게 하는 것도
있어요
^SSSoiju^ 오후 4:41 한 문장이 인덱스 걸린 컬럼 두개를 부르면
안된다고?
^술병대 오후 4:41 여러개 중에서 최고 좋은거 지가 찾아서
써거던요...
^술병대 오후 4:42 근데 그게 이상한 걸 지가 고를 수도 있어요...
^SSSoiju^ 오후 4:42 인덱스는 좀 아껴써야겠군
^술병대 오후 4:43 욕심 내도 안되고 인색해도 안돼요...
^SSSoiju^ 오후 4:43 으흠~
^술병대 오후 4:43 없이 써다가 좀 막히는 거 같다 생각
들면...그때 해도 안 늦어여...
^SSSoiju^ 오후 4:44 그래 그래야겠어
속도에 갈증느끼면.. 그때 추가해야지
^술병대 오후 4:45 그래도 기본 적인게 있죠...
예)
select 학생
from 학생 테이블
where 지역 = '경기도'
;
요것만 보면 지역하구 학생 넣어주면 좋죠...
^술병대 오후 4:46 공지 쪽에도 아까 같은 거 넣어주고요...
^SSSoiju^ 오후 4:47 좀 쓰다가 젤 많이 호출하는데다가 넣어야지
^SSSoiju^ 오후 4:48 선생테이블 identity 에도 넣어주야겠구만
^술병대 오후 4:48 그렇게 하지 말구....선생 쪽에다 지역하구
아뒤 넣어요...
^술병대 오후 4:48 학생도 마찮가지구요...
^술병대 오후 4:48 선생 찾기에 있으니까요..
^SSSoiju^ 오후 4:49 학생은 아직 많지 않아서 내가 연습해서 혼자
넣어볼래
^술병대 오후 4:49 그리고 선생쪽에 학교 + 아뒤
^SSSoiju^ 오후 4:49 지역 , 아뒤
이렇게
^술병대 오후 4:50 지역 + 아뒤 : 하나
학교 + 아뒤 : 두개...
^SSSoiju^ 오후 4:50 인덱스하나가 두개를 포함해??
^SSSoiju^ 오후 4:51 이렇게 넣어주면 안되나?
create index ndx_identities_n01 on teacher
( identity );
^술병대 오후 4:51 create index index_name on 선생 ( 지역, 아뒤
) ;
create index index_name on 선생 ( 학교, 아뒤
) ;
요렇게요...
^술병대 오후 4:51 인덱스 이름도 Unique해야됩니다...
^SSSoiju^ 오후 4:52 테이블이 달라도 유니크로?
^술병대 오후 4:52 규칙
ndx_(index) + table_name + n01 ( 일련번호 )
^술병대 오후 4:53 ndx_선생_n01 이렇게
^술병대 오후 4:53 다른방법
ndx_선생_col1_col2 ==> 요건 너무 길수도
있어서 좀 잘 안써요...
^SSSoiju^ 오후 4:54 (지역,아뒤) 이거랑 (아뒤,지역)
이거랑 차이가 나기도 하나?
^술병대 오후 4:55 차이가 나죠...
where 지역 = '지역' and 아뒤 = '아뒤'
이럴 경우 어느걸 써느냐는 DB 엔진이 알아서
하는 데 차이가 난다고 보죠...
^술병대 오후 4:56 자료가
경기도, A
경기도, B
경기도, C
...
경기도, Z
요렇게만 있을 때 경기도로 찾고 내려가면서
J를 찾는 거하고
J를 먼저 찾고 경기도인지 찾는 거 하고
다르죠...
^술병대 오후 4:56 분포도라 부르죠...
^SSSoiju^ 오후 4:57 음.. 그거까진 알 방법이 없겠군..
차이가 나도 큰 상관 없겠어
^술병대 오후 4:57 분포도에 따라 어떻게 인덱스를 쓸지
경정해야죠...
^술병대 오후 4:57 select 지역, count(*)
from 선생
group by 지역
이렇게 해보면 알 수 가 있죠...
^SSSoiju^ 오후 4:58 아뒤, 지역 인덱스 넣었당
^술병대 오후 4:58 반대로
select 아뒤, count(*)
from 선생
group by 아뒤
^술병대 오후 4:58 지역 아뒤로 넣어요...
^SSSoiju^ 오후 4:58 벌써 아뒤지역으로 넣었어
^술병대 오후 4:59 지우고 지역 아뒤로 넣어요...
^술병대 오후 4:59 아뒤로 지역 찾는 건 별루 없어요...
^술병대 오후 4:59 같이 해봐요...
^SSSoiju^ 오후 4:59 drop index ndx_teacher_n01 from teacher
이렇게 하면 되나?
^술병대 오후 4:59 두개 중 어느걸 쓰는지 알 수 잇을 거니까요...
^술병대 오후 5:00 두개만든 다음 돌려서 시간 검사...
둘중하나 지우고 돌리고
지운거 다시 만들고 다른거 지우고 돌리고
시간검사...
^SSSoiju^ 오후 5:01 drop index ndx_teacher_n01
이거 안되네
^술병대 오후 5:03 alter table teacher drop index
ndx_teacher_n01 ;
^SSSoiju^ 오후 5:05 별 차인 없구만..
^SSSoiju^ 오후 5:05 이제 학교,아뒤 넣어야지
^술병대 오후 5:06 넣으면 연락 줘요...
^SSSoiju^ 오후 5:08 총알디비 됐네^^
^SSSoiju^ 오후 5:08 인덱스 키에 NULL 들어가면 어케되지?
디비 뒤집히나?
^술병대 오후 5:08 고래도 늦네요...
^술병대 오후 5:08 null 들어가면 index는 취급안 해요...
^SSSoiju^ 오후 5:09 하하
그건 디비 전부 불러와서 그렇고
t_list0.html
요기서 테스트중이야
^술병대 오후 5:10 서울이 좀 느리네요...
^SSSoiju^ 오후 5:10 음.. 그렇더군..
^술병대 오후 5:10 아뒤 + 지역 요거는 어쨌어요...지워요...
^SSSoiju^ 오후 5:11 그거 지우고 지역,아뒤 fh sjgdjTdj
^SSSoiju^ 오후 5:11 넣었어
^SSSoiju^ 오후 5:11 리로드하면 서울도 총알이야
^술병대 오후 5:11 근데 이렇게 느리다니....
^술병대 오후 5:12 느려요....
^SSSoiju^ 오후 5:12 t_list0.html
요기서 봐봐
^술병대 오후 5:12 약간 빨라졌네요....
^술병대 오후 5:12 그래도 느려요...
^SSSoiju^ 오후 5:13 허허
난 대만족인걸
^SSSoiju^ 오후 5:15 터미널에서 쿼리 직접 때려봤는데
디비때문이 아니고 php 스크립에서 부하줘서
그런거같어
아직 정리 다 안됐거덩
레벨 주는 부분만 정리하면 광속 나오게떵
^술병대 오후 5:15 그렇겠네요...
^술병대 오후 5:15 그럼 디비 보다 소스좀 고쳐봐요...^^
^SSSoiju^ 오후 5:16 흘흘
오늘 막강한 무공을 터득했다 움홧홧홧!!!
^술병대 오후 5:16 그리고 하나더 추가 해야되요...
( 학교 + 아뒤 )
^SSSoiju^ 오후 5:16 그거 넣었지비 크크크
^술병대 오후 5:16 호호...
^SSSoiju^ 오후 5:17 대포 한잔 해야지?
^술병대 오후 5:17 아라서요...
^술병대 오후 5:17 몇시에 볼까요...
출처 : http://www.phpschool.com/bbs2/inc_view.html?id=5157&code=database2&start=210&mode=search&s_que=%C0%CE%B5%A6%BD%BA&field=title&operator=and&period=all
bibaram