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