나는 수 억 개의 행을 가진 테이블을 가지고 있습니다. 열 중 하나가 `status` varchar(10)
입니다.두 개의 동일한 열이있는 MySQL 인덱스
상태의 대부분의 값은 1 자이며 최대 값은 10 자까지입니다. 그러나 값의 서브 세트는 고유 한 패턴을 갖습니다. 상태 값의 전체 그룹은 하나의 문자 c
과 0에서 10,000 사이의 숫자로 시작합니다.
ALTER TABLE tbl ADD KEY (status(1), status);
이 두 개인 키, status(1)
(전체 칼럼의 첫 번째 문자)와 두 번째 status
에 일을하는 것보다 더 나은 것 :
나는 인덱스에 다음이 열을 싶습니다. 함께하면 항상 더 빨라졌습니다.
그러나 MySQL은 같은 만들기에서 저를 금지 :
ERROR 1060 (42S21): Duplicate column name 'status'
가 어떻게이 문제를 해결할 수 있습니까?
전화 번호부의 각 개인 이름에 대해 색인을 갖는 것처럼 보이는 저에게 - 색인을 데이터베이스로 검색하는 데 비교적 오래 걸릴 것입니다. 이 잘못된 생각입니까? – Mikhail
@Mikhail 예, 그 생각은 잘못되었습니다. 형식에 관계없이'status'를 검색하면 색인을 이용할 수 있습니다. –
나는 그것이 그것을 이용할 수 있다는 것을 이해한다. 당신이 말하는 것은 첫 번째 캐릭터를 찾는 것입니다, 그리고 나머지 가치는 더 빠르지 않습니까? – Mikhail