mysql이 인덱스 정렬을 사용하지 않고 정렬하는 이유는 무엇입니까?
PHP中文网
PHP中文网 2017-05-18 10:44:38
0
3
1038

city_id별 주문(기본 키 인덱스)

국가 ID별 주문(색인 생성 없음!!!)

PHP中文网
PHP中文网

认证0级讲师

모든 응답(3)
漂亮男人

city_id가 기본 키이고 country_id가 복합 기본 키입니다.

刘奇

으로 변경되었습니다. 으아아아

그렇습니다. SELECT에서 인덱스가 아닌 열을 쿼리하면 ORDER BY는 인덱스를 사용하지 않습니다. FORCE INDEX를 사용하여 인덱스를 강제로 사용할 수 있습니다. SELECT中查询了索引建以外的列,那么ORDER BY就不会使用索引了。你可以用FORCE INDEX来强制使用索引。

还有一点,就是所谓的覆盖索引。覆盖索引的定义是:MySQL可以根据索引返回select字段而不用根据索引再次查询文件而得出结果。

当你使用select *时,你没有强制指定索引,那么mysql为了得到你的查询的字段而查询文件,然后再进行排序操作,这就没有用到覆盖索引。而你使用了force index就会强制使用覆盖索引,这样就不会出现filesort

또 하나의 포인트는 이른바 커버링지수. 포함 인덱스의 정의는 다음과 같습니다. MySQL은 결과를 얻기 위해 인덱스를 기반으로 파일을 다시 쿼리하지 않고도 인덱스를 기반으로 select 필드를 반환할 수 있습니다. #🎜🎜# #🎜🎜#select *를 사용할 때 인덱스를 강제로 지정하지 않고 mysql이 파일을 쿼리하여 쿼리 필드를 가져온 다음 다음을 수행합니다. 정렬 작업은 포함 인덱스를 사용하지 않습니다. 그리고 force index를 사용하면 강제적으로 Covering index를 사용하게 되어 filesort가 발생하지 않게 됩니다. #🎜🎜#
Ty80

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿