728x90
1. 인덱스에 들어있는 컬럼을 수정하면 인덱스가 적용되지 않는다.
num이라는 컬럼이 인덱스에 들어 있을 때,
SELECT * FROM table WHERE num + 10 = 30 // Index 적용 안됨
SELECT * FROM table WHERE num = 20 + 10 // Index 적용 됨
2. Null을 조건에서 사용한 경우 인덱스가 적용되지 않는다.
SELECT * FROM users WHERE num IS NULL // Index 적용 안됨
SELECT * FROM users WHERE num IS NOT NULL // Index 적용 안됨
SELECT * FROM users WHERE num > 0 // Index 적용 됨
SELECT * FROM users WHERE num > '' // Index 적용 됨
3. Not을 조건에서 사용한 경우 인덱스가 적용되지 않는다.
Not일 경우 무조건 인덱스가 적용 안되는 것은 아니지만, 일반적으로 Not에 사용되는 값이 아닌 데이터 비율이 높은 경우가 많기 때문에 인덱스가 적용이 안된다.
SELECT * FROM users WHERE num != 10 // Index 적용 안됨
SELECT * FROm users WHERE num < 20 AND num > 10 // Index 적용 됨
4. Like를 조건에서 사용할 때 앞에 %를 붙인 경우 인덱스가 적용되지 않는다.
SELECT * FROM users WHERE q LIKE '%a%' // Index 적용 안됨
SELECT * FROM users WHERE q LIKE 'a%' // Index 적용 됨
5. In을 조건에서 사용한 경우 인덱스가 적용되지 않는다.
In을 사용한다고 항상 인덱스가 적용 안되는 것은 아니지만, In에 포함돈 데이터의 비율이 높으면 DB가 판단하여 인덱스를 적용하지 않는다.
SELECT * FROM users WHERE num IN (1, 2, 3)
6. 인덱스의 컬럼 순서대로 조건에서 사용하지 않은 경우 인덱스가 적용되지 않는다.
인덱스가 name, age 순서인 경우
SELECT * FROM users WHERE name = 'a' AND age = 10 // Index 적용 됨
SELECT * FROM users WHERE age = 10 AND name = 'a' // Index 적용 안됨
- 참조
728x90
'개발 > ETC' 카테고리의 다른 글
URI is not absolute 해결 (69) | 2023.10.04 |
---|---|
REST API 란? (0) | 2023.06.08 |
PK와 UK 차이 (1) | 2023.04.25 |
Git, SVN 차이 (0) | 2023.04.24 |
로그인 세션, 토큰 장단점 (0) | 2023.04.22 |