인덱스 된 INT 열이 90 %의 행에 대해 0이되는 mysql 테이블이 있습니다. 0 대신 NULL을 사용하도록 행을 변경하면 색인에서 제외되어 색인이 약 90 % 작아 집니까?mysql 인덱스에 null 값이 있습니까?
답변
인덱스가 NULL
인 것처럼 보입니다. 당신이 MySQL이 인덱스를 만드는 동안 쓰기에 대한 테이블을 LOCK 것이다이 때문에 실행할 때
하는 것은주의해야합니다. 인덱스 작성은 열이 비어있는 경우 (모두 null 임) 큰 테이블에서 시간이 걸릴 수 있습니다.
어떻게 결론에 도달 했습니까? 주제에 대한 언급이 없습니다. –
기사 하단에 주석이 달려있었습니다. 나는 관련 부분을 뽑았다. –
커다란 테이블에서 오랜 시간이 걸리는 이유는 MySQL이 전체 테이블을 읽어야하기 때문입니다. 거대한 인덱스를 구축하고 있기 때문에가 아닙니다. 내가 틀렸을 수도있다. –
아니요, 계속 포함 시키지만 결과가 어떤 경우인지에 대해 너무 많은 가정을하지 마십시오. 많은 것은 다른 값의 범위 (Google에서 "카디널리티")에 따라 다릅니다.
MSSQL에는 이러한 유형의 상황 (즉, 필터를 기반으로하는 인덱스의 레코드 포함)에 대해 "필터링 된 인덱스"라는 새로운 인덱스 유형이 있습니다. dBASE 타입의 시스템은 비슷한 기능을 가지고 있었고 꽤 편리했습니다.
열을 null로 허용하면 열의 저장소 요구 사항에 바이트가 추가됩니다. 이렇게하면 인덱스 크기가 커져서 좋지 않을 수 있습니다. 그것은 많은 쿼리가 "IS NULL"또는 "NOT NULL"을 사용하도록 변경된 경우 값 비교보다 전반적으로 빠를 것이라고 말합니다.
내 직감이 null이 아니라고 말하지만 한 가지 대답이 있습니다. 테스트! COL_NAME에서 동일한 최적화를 수행 할 수
-1 이것은 질문에 대답하지 않습니다. – user359996
인덱스의 크기가 증가할지 여부는 문제입니다. 대답은 두 번째 문장에서 색인 크기가 증가한다는 것입니다. –
* title *은 (는) MySQL이 null 열을 색인화하는지 여부를 묻습니다. * 설명 *은 다소 다른 질문을하는 것 같지만, 처음에는 (제목) 질문이 왜 제기되었는지에 대한 설명 일뿐입니다. 또한 사람들은 주로 제목을 기반으로 질문을 읽는지 여부를 선택하기 때문에 제목 양식이 대부분의 경우 설명 양식보다 우선합니다. – user359996
http://dev.mysql.com/doc/refman/5.0/en/is-null-optimization.html
MySQL은 그것이 COL_NAME = constant_value 사용할 수 NULL이다. 예를 들어, MySQL은 인덱스와 범위를 사용하여 IS NULL로 NULL을 검색 할 수 있습니다.
설명서에 몇 가지주의 사항이 포함되어 있습니다. "최적화는 하나의 IS NULL 만 처리 할 수 있습니다". – Timo
각 인덱스에는 카디널리티가 있습니다. AFAIK 인덱스가 많은 행에 대해 동일한 값을 반복한다고 말하는 것은 합리적이지 않습니다.하지만 인덱스는 많은 행 (이 필드에 대해 null 값을 갖는 행)의 클러스터 된 인덱스에 대한 반복 값을 처리하고 클러스터 된 인덱스의 참조 ID를 유지합니다 의미 : NULL 값 인덱스 필드가있는 각 행은 PK만큼 큰 크기를 낭비합니다 (이 이유 때문에 전문가는 복합 PK가있는 경우 합리적인 PK 크기를 권장합니다).
- 1. mysql null 문제가 있습니까?
- 2. 인덱스에 대한 MySQL SELECT 문
- 3. null 값이 mysql 데이터베이스 행에 입력되지 않도록하는 방법은 무엇입니까?
- 4. null 값이 저장 공간을 절약합니까?
- 5. MySQL 쿼리는 인덱스에 더 오래 걸립니까?
- 6. NULL 필드가있는 mysql 유니온
- 7. MySQL NULL 질문
- 8. 어떻게 JDBC에서 resultSet의 null 값이 아닌 null 값을 읽습니까?
- 9. 인덱스에 인덱스를 만들 수 있습니까?
- 10. 두 개의 인덱스에 mysql join하는 데 오랜 시간이 걸립니다!
- 11. SUM 값이 NULL 인 SQL 문제
- 12. webmethod의 매개 변수 값에 null 값이 있습니다.
- 13. 크리스탈 리포트 : 레코드 인식하지 Null 값이
- 14. Django가 NULL 대신 Null 용 MySQL 필드에 "(NULL)"문자열을 삽입했습니다.
- 15. null 값이 렌더링되는 데이터 바인딩 된 컨트롤
- 16. 값이 비어 있으면 mysql 질의
- 17. 특정 필드 값이 0보다 큰 MySql 제약
- 18. 데이터 세트의 "null"값이 공간을 차지합니까?
- 19. SQLServer 결과 값이 NULL 인 곳
- 20. mysql 테이블의 기본 키 값이 항상 동일
- 21. MYSQL : NULL 날짜를 CURRENT_DATE와 비교
- 22. 존재하지 않는 ID에 대해 SQL 테이블에 NULL 값이 필요합니까?
- 23. mysql date-format returns null
- 24. 조건부 NULL 열이있는 MySQL SELECT
- 25. Entity Framework - MySQL - Null 비교!
- 26. mysql update increment null null 인 int 필드
- 27. MySQL 해시 인덱스에 대한 좋은 문서/참조는 무엇입니까?
- 28. 중간 또는 하위 카디널리티 열의 mysql 인덱스에 대한 질문
- 29. 엔트리가 인덱스에 없습니다.
- 30. 값이 mysql 테이블의 열에 있는지 확인하십시오.
우수 질문 –