찾다

 >  Q&A  >  본문

Railscreated_at 인덱스 미사용 인덱스

CacheSync라는 모델이 있는데 mysql에 인덱스가 있다고 표시됩니다.

으아아아

근데 설명하러 가보니 인덱스를 사용하지 않는다고 하네요:

으아아아

인덱스를 사용하지 않는 이유는 무엇인가요?

도움을 주셔서 감사합니다. 케빈

P粉384679266P粉384679266253일 전351

모든 응답(1)나는 대답할 것이다

  • P粉421119778

    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 이것이 여전히 현재인지는 모르겠습니다. 관행.

    회신하다
    0
  • 취소회신하다