여러 인덱스를 넣어야 할 때를 알고 싶습니다. 같은 "인덱스"또는 다른 인덱스를 사용해야합니까?Mysql : 테이블에서 인덱스를 만드는 방법
INDEX `field1` (`field1`)
INDEX `field2` (`field2`)
또는
INDEX `field1` (`field1`,`field2`)
는 differneces이 있습니까?
감사합니다.
여러 인덱스를 넣어야 할 때를 알고 싶습니다. 같은 "인덱스"또는 다른 인덱스를 사용해야합니까?Mysql : 테이블에서 인덱스를 만드는 방법
INDEX `field1` (`field1`)
INDEX `field2` (`field2`)
또는
INDEX `field1` (`field1`,`field2`)
는 differneces이 있습니까?
감사합니다.
차이가 있습니다. 두 열 (또는 그 이상)로 만들어진 색인은 지정한 열의 순서에 따라 작성됩니다. 첫 번째 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 개의 필드 색인을 갖는 것이 별도의 색인보다 더 빠를 것이므로 색인을 작성하는 방법을 결정하는 것은 어떤 유형의 조회가 필요한지에 달려 있습니다.
예, 차이가 있습니다. 봐 :
INDEX `field1` (`field1`,`field2`)
두 인덱스가 느려집니다 : 당신이
SELECT * WHERE a = '1' and b = '2'
같은 쿼리를 실행할거야 때 열 a와 b에 대한 하나의 인덱스를 생성합니다.
죄송합니다.
좋아요.하지만 ('SELECT * FROM tbl WHERE a = 1') 인덱스를 전혀 사용하지 않으면됩니까? – dynamic
@ yes123 이것은 인덱스에서'a'를 먼저 지정했기 때문에 사용됩니다. 'SELECT * tbl에서 b = 2'는이 인덱스를 사용하지 않을 것입니다. – nos
이 시점에서 흠은 2 개의 인덱스를 분리하여 사용하는 것이 낫지 않습니까? – dynamic