[MySQL] 조회할때 키를 강제로 지정하기
보통은 지정하지 않아도 WHERE절의 조건에 해당하는 것을 자동으로 처리 합니다.
하지만 간혹 앞쪽의 데이터만 가져오는 데는 키를 지정하는 것이 더 빠른 경우가 있습니다.
(처한 상황에 따라 다를 수 있습니다.)
아래와 같이 USE INDEX(키이름)을 지정하면 됩니다.
중요한것은 컬럼명을 넣는것이 아니라 키이름을 넣는 것이다.
보통은 컬럼명과 키 이름이 같은 경우가 많아서 착각을 할 수 있다.
DESC SELECT COUNT(*) FROM test.member USE INDEX(키이름) WHERE id>0;
아래와 같이 테이블을 만들었을 경우
no에 컬럼의 키를 강제로 지정하고자 할때 프라이머리 키 이기 때문에 프라이머리를 지정해야 되는 것이다.
정확한 것은 show index from 테이블명; 명령을 통해서 정확히 알 수 있다.
아래처럼 테이블을 만들때 PRIMARY KEY 라고 지정하여 만들지만
키 목록 명령을 통해서 보면 "PRIMARY" 라고 나와 있다.
그렇기 때문에 조회할때는 다음과 같이 된다.
SELECT COUNT(*) FROM test.member USE INDEX(PRIMARY) WHERE id>120;
CREATE TABLE "member_data" (
"no" int unsigned NOT NULL AUTO_INCREMENT COMMENT 'member id',
"status" varchar(64) NOT NULL COMMENT 'status',
PRIMARY KEY ("no"),
KEY "status" ("status")
) ENGINE=InnoDB AUTO_INCREMENT=12345678 DEFAULT CHARSET=utf8mb4 COMMENT='data'