테이블 팀은 1169 개의 행을 포함하며, 1133은 UserId 필드! = 0을가집니다.왜 count를 선택하면 많은 행을 가져 옵니까?
쿼리은 "사용자 아이디"필드에 인덱스가 :
EXPLAIN SELECT count(*) FROM teams WHERE UserId != 0
반환 출력을 검사하는 동일한 1133
에 쿼리 필요가 모든 행을 검사하는 이유 ? 이 목적으로 인덱스 만 사용하면 안됩니까?
감사합니다.
테이블 팀은 1169 개의 행을 포함하며, 1133은 UserId 필드! = 0을가집니다.왜 count를 선택하면 많은 행을 가져 옵니까?
쿼리은 "사용자 아이디"필드에 인덱스가 :
EXPLAIN SELECT count(*) FROM teams WHERE UserId != 0
반환 출력을 검사하는 동일한 1133
에 쿼리 필요가 모든 행을 검사하는 이유 ? 이 목적으로 인덱스 만 사용하면 안됩니까?
감사합니다.
UserId! = 0이라고 말했기 때문에 거의 모든 행을 원하므로 거의 모든 행을 검사합니다. 물론, 당신은 하나의 레코드 만 보여줄 수 있도록 "카운트"를 만들었지 만, 그것들을 계산하려면 모두 가져와야 만했다. (! = 전년 동기 대비 사용자 ID 반대로 사용자 아이디 = XX)는 정확한 값을 요구하기 때문에 당신이
select count(1) from teams where UserId = 100
을 수행하는 경우 다음은 몇 행 ONY 검토 할 것이다.
SELECT COUNT (사용자 ID)를 사용해 보셨습니까? – Hajo
인덱스 항목의 수가 맞지 않습니까? 클러스터 된 인덱스를 기억하면 테이블 IS가 인덱스입니다. – Ben