84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
CacheSync라는 모델이 있는데 mysql에 인덱스가 있다고 표시됩니다.
근데 설명하러 가보니 인덱스를 사용하지 않는다고 하네요:
인덱스를 사용하지 않는 이유는 무엇인가요?
도움을 주셔서 감사합니다. 케빈
내 경험상 옵티마이저가 조건이 테이블의 20% 이상 일치한다고 추정하면 테이블 스캔으로 돌아갑니다. 클러스터형 인덱스에서 모든 행을 읽는 것이 보조 인덱스에서 값을 조회한 다음 테이블에서 해당 행을 가져오기 위해 또 다른 조회를 수행하는 것보다 빠르다고 추측합니다.
20% 임계값은 공식적인 기능이 아니며 단지 제가 관찰한 것입니다. 현재 버전의 MySQL에서는 구성할 수 없습니다.
인덱스 힌트를 사용하여 테이블 스캔 비용이 너무 높다는 것을 확신시킬 수 있습니다.
지정한 인덱스가 쿼리 조건과 관련이 없는 경우에만 테이블 스캔을 수행합니다.
인덱스 힌트에 대한 자세한 내용은 https://dev.mysql.com/doc/refman/8.0/en/index-hints.html을 참조하세요.
저는 Rails 개발자는 아니지만 이 오래된 답변은 색인 힌트 구문을 Rails에 전달하는 방법을 보여줍니다. https://stackoverflow.com/a/13904227/20860 이것이 여전히 현재인지는 모르겠습니다. 관행.
내 경험상 옵티마이저가 조건이 테이블의 20% 이상 일치한다고 추정하면 테이블 스캔으로 돌아갑니다. 클러스터형 인덱스에서 모든 행을 읽는 것이 보조 인덱스에서 값을 조회한 다음 테이블에서 해당 행을 가져오기 위해 또 다른 조회를 수행하는 것보다 빠르다고 추측합니다.
20% 임계값은 공식적인 기능이 아니며 단지 제가 관찰한 것입니다. 현재 버전의 MySQL에서는 구성할 수 없습니다.
인덱스 힌트를 사용하여 테이블 스캔 비용이 너무 높다는 것을 확신시킬 수 있습니다.
으아악지정한 인덱스가 쿼리 조건과 관련이 없는 경우에만 테이블 스캔을 수행합니다.
인덱스 힌트에 대한 자세한 내용은 https://dev.mysql.com/doc/refman/8.0/en/index-hints.html을 참조하세요.
저는 Rails 개발자는 아니지만 이 오래된 답변은 색인 힌트 구문을 Rails에 전달하는 방법을 보여줍니다. https://stackoverflow.com/a/13904227/20860 이것이 여전히 현재인지는 모르겠습니다. 관행.