mysql - SQL 최적화 문제, 사이가 in보다 낫나요?
phpcn_u1582
phpcn_u1582 2017-05-18 10:56:50
0
4
863

인터넷에서 정보를 보고 이렇게 말했습니다.

으아악
phpcn_u1582
phpcn_u1582

모든 응답(4)
阿神

물론 파싱을 줄이기 위해 연속된 값을 사용하며, 기본적으로 in의 범위가 특정 숫자를 초과하면 테이블 전체가 9개 이하로 삭제됩니다

아래 댓글에 답변을 추가하고 싶습니다.
전체 시청 시 상황에 따라 다릅니다. 위 답변은 단지 기억에 기반한 답변이므로 아래층 친구가 더 심각하므로 설명하겠습니다. 여기서 다시 한 번 말씀드리지만, 이는 숫자가 아닌 비율로, 대략 25%~35% 정도 입니다. 얼마인지 궁금하시다면 제 실력으로는 소스코드를 읽어보지 않고는 확인이 불가능해 죄송합니다. . 그리고 비율이 약 30이라고 해서 전체 테이블 스캔을 수행해야 한다는 의미는 아닙니다. 왜냐하면 mysql에도 인덱스 스캔이 있기 때문입니다. 즉, 선택한 콘텐츠를 인덱스에서 찾을 수 있으면 당연히 전체 테이블을 스캔하지 않는다는 뜻입니다. 다음과 같습니다. ttt에서 id를 선택하고(..)에서 *를 선택합니다. 여기서 id는 (...); id 값은 여전히 ​​기본 키 스캔이 되며, 다음 상황은 이 비율의 상황입니다. 자세한 내용은 아래 예를 참조하세요. 수정은 환영합니다^_^
. 사이의 상황이 좋은 이유는 무엇입니까? 는 데이터 조각을 검색하면 그 근처의 데이터도 높은 확률로 사용되는 확률 알고리즘이므로 다중 주소 지정을 피하기 위해 중복된 데이터를 한 번에 꺼내는 상황이 있습니다. 시간 사이에 연속적인 값을 사용하는 것이 적합합니다

으아아아
阿神

데이터베이스의 B-트리 인덱스 저장 구조에 따라 데이터를 가리키는 물리적 주소가 리프 노드에 저장되며, 클러스터형 인덱스가 있을 때 이 물리적 주소가 정렬됩니다.

으아악
洪涛

EXPLAIN mysql 语句 출력 살펴보기

淡淡烟草味

between을 사용할 때는 상한과 하한만 일치시키면 되므로 각 in을 다시 읽어야 하므로 전체 테이블 스캔이 발생합니다.

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