2011-02-26 4 views
0

여러 인덱스를 넣어야 할 때를 알고 싶습니다. 같은 "인덱스"또는 다른 인덱스를 사용해야합니까?Mysql : 테이블에서 인덱스를 만드는 방법

INDEX `field1` (`field1`) 
INDEX `field2` (`field2`) 

또는

INDEX `field1` (`field1`,`field2`) 

는 differneces이 있습니까?

감사합니다.

답변

0

차이가 있습니다. 두 열 (또는 그 이상)로 만들어진 색인은 지정한 열의 순서에 따라 작성됩니다. 첫 번째 X 필드를 검색 할 때만 사용할 수 있습니다. 의 당신은 인덱스와 같은 쿼리를 실행할 때 사용됩니다

exampleIndex (`a`, `b`, `c`) 

있다고 가정 해 봅시다 :

SELECT * FROM tbl WHERE a = 1; 
SELECT * FROM tbl WHERE a = 1 AND b = 2; 
SELECT * FROM tbl WHERE a = 1 AND b = 2 AND c = 3; 

같은 쿼리를 실행할 때 사용되지 않습니다 :의 질의에

SELECT * FROM tbl WHERE b = 2; 
SELECT * FROM tbl WHERE c = 3; 
SELECT * FROM tbl WHERE b = 2 AND c = 3; 

을 첫 번째 유형은 3 개의 필드 색인을 갖는 것이 별도의 색인보다 더 빠를 것이므로 색인을 작성하는 방법을 결정하는 것은 어떤 유형의 조회가 필요한지에 달려 있습니다.

0

예, 차이가 있습니다. 봐 :

INDEX `field1` (`field1`,`field2`) 

두 인덱스가 느려집니다 : 당신이

SELECT * WHERE a = '1' and b = '2' 

같은 쿼리를 실행할거야 때 열 a와 b에 대한 하나의 인덱스를 생성합니다.

죄송합니다.

+0

좋아요.하지만 ('SELECT * FROM tbl WHERE a = 1') 인덱스를 전혀 사용하지 않으면됩니까? – dynamic

+0

@ yes123 이것은 인덱스에서'a'를 먼저 지정했기 때문에 사용됩니다. 'SELECT * tbl에서 b = 2'는이 인덱스를 사용하지 않을 것입니다. – nos

+0

이 시점에서 흠은 2 개의 인덱스를 분리하여 사용하는 것이 낫지 않습니까? – dynamic

관련 문제