색인이 효력을 상실한 원인
2234 단어 mysql
1. 스텔스 변환으로 인덱스가 효력을 상실합니다.이 점은 마땅히 중시를 불러일으켜야 한다.개발 중에 자주 범하는 실수이기도 하죠.테이블의 필드 때문에tumdn은varchar2(20)로 정의되었지만, 검색할 때 이 필드를number 형식으로where 조건으로 Oracle에 전송하면 색인이 효력을 상실할 수 있습니다.잘못된 예: select * from test where tumdn=13333333333; 올바른 예: select * from test where tumdn=‘13333333333’;
2. 색인열을 연산하면 색인이 효력을 상실합니다. 제가 가리키는 색인열에 대한 연산은 (+,-,*,/,!) 오류를 포함하는 예:select * from test where id-1=9;올바른 예: select * from test where id = 10;
3. Oracle 내부 함수를 사용하여 인덱스를 사용할 수 없습니다.이러한 경우 함수 기반 인덱스를 만들어야 합니다.잘못된 예: select * from test where round (id) = 10;이 때 id의 인덱스가 작동하지 않는다는 것을 설명합니다
4. 아래의 사용은 색인을 실효시킬 수 있으므로 사용을 피해야 한다.a. <>, not in, not exist,!= 사용b. like “%_” 백분호는 앞에서 (인덱스를 만들 때 리버스 (column Name) 로 처리할 수 있습니다) c. 복합 인덱스에서 첫 번째 위치가 아닌 인덱스 열을 단독으로 참조합니다.항상 색인의 첫 번째 열을 사용해야 합니다. 만약 색인이 여러 열에 세워져 있다면, 첫 번째 열이where 자문에서 인용될 때만 최적화기가 이 색인을 사용할 수 있습니다.d. 문자형 필드가 숫자일 때where 조건에 인용부호를 추가하지 않습니다.e. 변수가times 변수를 사용하고 표의 필드가date 변수를 사용할 때.혹은 상반된 상황.
5. 빈 변수 값을 비교 연산자(기호)와 직접 비교하지 마십시오.변수가 비어 있을 수 있으면 IS NULL 또는 IS NOT NULL을 사용하거나 ISNULL 함수를 사용해야 합니다.
6. SQL 코드에 큰따옴표를 사용하지 마십시오.문자 상수는 작은 따옴표를 사용하기 때문이다.객체 이름을 제한할 필요가 없는 경우 (비ANSI SQL 표준) 괄호를 사용하여 이름을 괄호로 묶을 수 있습니다.
색인 사용 지침:
실행 계획에 따라 SQL을 분석한 후에 각 하위 조회의 인덱스와 원가 사용 상황을 점차적으로 최적화시킨다. 실행 계획에 따르면 나의 이해는 인덱스를 점차적으로 최적화하는 과정으로 모든 조회가 가능한 한 인덱스를 사용하도록 하는 것이다. 인덱스 과정에서 인덱스는 자주 효력을 상실할 수 있다.구결
,
,
,
LIKE ,
or,
var ,SQL
,
색인 작성 고려 사항
1. 단가 인덱스, 최대한 여과성이 좋은 필드를 선택한다. 예를 들어 성별 필드, 여과도가 50%이고 식별률이 떨어진다. 인덱스 2, 조합 인덱스를 만드는 것을 권장하지 않는다. 인덱스 필드의 순서는 식별도에 따라 정렬할 수 있다. 식별도가 높을수록 앞에 놓인다. 3. 조합 인덱스, where 문장에 더 많은 필드를 포함한다. 4. 가능한 한 분석에 따라 계획을 집행하고통계 정보,query의 맞춤법을 조정하여 적당한 인덱스의 목적을 달성하면 인덱스가 효력을 잃기 쉬운 몇 가지 주의점
1. 인덱스 열에서 어떠한 조작(계산, 함수, 유형 변환)을 하지 않으면 인덱스가 효력을 상실하여 전체 표 스캔 2로 전환할 수 있다. 만약에 중간의 한 필드가 범위 조건을 사용한다면 오른쪽의 열 인덱스는 효력을 상실한다. 3. 덮어쓰는 인덱스(인덱스 열과 조회 열이 일치)를 사용하고 select * 4를 감소한다.mysql가 (!=또는 <>)와 같지 않을 때 색인열을 사용할 수 없으면 전체 테이블 스캔 5, isnull, isnot null도 색인 6을 사용할 수 없습니다. like 어댑터는 색인열의 오른쪽에 놓아야 합니다. 그렇지 않으면 색인이 효력을 상실합니다. 프로그래밍 전체 테이블 스캔 7, 문자열에 인덱스 번호를 붙이지 않으면 색인이 효력을 상실합니다. 8, or를 적게 사용하면 색인을 연결할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL에서 JSON 인덱싱 - aarondfrancis사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 말하지만 완전히 정확하지는 않습니다. MySQL로 JSON 열을 인덱싱하는 것은 완전히 가능합니다! 사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.