2014-11-21 3 views
2

나는 클라이언트 선택에 따라 더 빨리 작업 할 직원 목록을 만들고 싶습니다. 이를 위해 client_id 필드에 대한 색인을 만들었습니다.테이블 인덱싱이 작동하지 않음

테이블 구조 및 색인 구조의 스크린 샷을 첨부했습니다.

이것은 선택에 사용한 SQL 쿼리입니다.

SELECT staff_client_id,staff_id,staff_full_name from kr_staffs where staff_client_id=2 AND staff_status='active' 

는 그러나 쿼리의 속도는 인덱스없이 동일합니다.

이이 당신은 인덱스를 사용하고 있는지 확인하기 위해 쿼리 실행 계획을 확인하실 수 있습니다 테이블 인덱스 구조

enter image description here

+0

어떻게 staff_status = '활성화' 이 테이블에 많은 행이 있습니까? 실적을 어떻게 측정하고 있습니까? 예를 들어 테이블에 수천 개의 행이 있고 쿼리가 100ms 가량 걸리면 클라이언트와 데이터베이스 서버간에 네트워킹 문제가 발생할 수 있습니다. – Dai

+0

@Dai 2000 행이 테이블에 있습니다. 네트워크에는 문제가 없습니다. –

답변

0

입니다

enter image description here

내 테이블 구조입니다. EXPLAIN http://dev.mysql.com/doc/refman/5.7/en/using-explain.html을 참조 할 수 있습니다.

는 대신 (인덱스 및없이) 다음 쿼리에 걸리는 시간을 측정 할 수 있습니다 kr_staffs FROM

SELECT COUNT (*)를 WHERE staff_client_id = 2 AND

+0

색인과 색인을 사용하여 쿼리를 시도했습니다. 둘 다 같은 시간이 걸렸습니다. –

+0

@JohnMathew staff_client_id = 2 인 레코드가 많은 경우 쿼리 최적화 프로그램은 클러스터되지 않은 인덱스 대신 전체 테이블 검색을 수행하기로 결정할 수 있습니다. 인덱스를 사용하는 경우 각 레코드를 검색해야합니다 (staff_status 또는 데이터 가져 오기). 테이블 스캔을 직접 수행하는 것보다 비용이 많이 듭니다. – naresh

관련 문제