이것은 영원히 가지고있는 질문입니다.MySQL 인덱스 및 순서
인덱스의 순서가 중요하다는 것을 알고있는 한. 따라서 [first_name, last_name]
과 같은 색인은 [last_name, first_name]
과 같지 않습니까? 나는 첫 번째 인덱스를 정의하면
, 그것은 단지
SELECT * FROM table WHERE first_name="john" AND last_name="doe";
사용하고 있지 내가 ORM을 사용하고 있기 때문에
SELECT * FROM table WHERE last_name="doe" AND first_name="john";
, 나는 아무 생각에서이 없다는 것을 의미 하는가 이 열들은 순서대로 호출됩니다. 모든 순열에 인덱스를 추가해야한다는 의미입니까? 2 열 인덱스가 있으면 그렇게 할 수 있지만 인덱스가 3 열 또는 4 열이면 어떻게됩니까?
그래서 추측 * 테이블에서 where last_name = "doe"AND first_name = "john"은 아닐까요? 그렇다면 모든 쿼리 건물이 내 ORM에 의해 숨겨져 있기 때문에 정의 할 3 열의 인덱스가 있기 때문에 아마도 2 인덱스를 정의해야합니다 ... 정말 싫은데 ... –
아니요, 너 오해 했어. 'last_name' = "doe"AND'first_name' = "john"질의는 ('first_name','last_name') 또는 ('last_name','first_name') 인덱스를 사용합니다. – ChssPly76
질문 : 2 AND 조건을 가진 쿼리의 경우 쿼리의 조건과 비교하여 인덱스가 "반전"되었습니까? 아니면 해당 열의 카디널리티에 따라 달라질까요? – Mihai