2012-05-27 3 views
2

나는 어딘가에서 mysql의 열 순서가 중요하다고 읽었다. 인덱스 된 열을 참조하고 있다고 생각합니다.mysql에서 열 순서가 중요합니까?

질문 : 질문 : 열 순서가 중요한 경우, 언제 그리고 왜 중요합니까?

내가 묻는 이유는 아래의 것과 비슷한 mysql 테이블이 있기 때문입니다. 기본 색인이 왼쪽에 있고 맨 오른쪽에 색인이 있습니다. 이거 나쁜거야? MyISAM 테이블이며, 주로 선택 항목 (삽입, 삭제 또는 업데이트 없음)에 사용됩니다. 인덱스를 정의 할 때이 인덱스가 쿼리를 실행에 사용할 적합한 지 여부에 영향을 주므로

----------------------------------------------- 
| Primary index | data1| data2 | d3| Index | 
----------------------------------------------- 
|  1   | A | cat | 1 | A | 
|  2   | B | toads | 3 | A | 
|  3   | A | yabby | 7 | B | 
|  4   | B | rabbits | 1 | B | 
----------------------------------------------- 
+0

나는 명령이 중요하다고 상상할 수 없다. 그것은 중요하지 않을 수도 있지만, DBMS는 이것을 최적화 할 수 있으므로 반드시 이와 같은 것에 대해 걱정할 필요가 없습니다. 나는 이것에 대한 권위있는 대답을보고 싶습니다. – Oleksi

답변

3

열 순서 만 중요합니다. (이것은 MySQL뿐만 아니라 모든 RBDMS에 해당됩니다)

예 :

색인은 열 순서대로 MyIndex(a, b, c)에 정의되어 있습니다.

쿼리와 같은

select a from mytable 
where c = somevalue 
아마 쿼리를 실행하기 위해 그 인덱스를 사용하지 않습니다 반면

(예 : 행 수, 열 선택 등과 같은 여러 가지 요인에 따라 달라집니다)

, 그것은 거의 확실 MyIndex2(c,a,b)

업데이트로 정의 된 색인을 사용하도록 선택하십시오. use-the-index-luke.com (감사합니다. Greg)을 참조하십시오.

+0

이것이 맞습니다. http://use-the-index-luke.com/에서 관련 정보를 읽으십시오. – gcochard

+0

그래서 이것을 정확하게 이해한다면 인덱스가 여러 컬럼 (복합 인덱스)에 적용될 때 컬럼의 순서가 중요합니다. 색인이 단 하나의 열에있는 위의 예에서 문제가되어서는 안됩니다. 이 말이 맞습니까? – TryHarder

+0

예 ......................... –

관련 문제