[SQL] 부울 필드 색인
SQL부울 필드 색인
이것은 아마도 정말 바보 같은 질문이지만, 데이터베이스 테이블에 부울 필드를 색인에 많은 도움이 될 것입니까?
"소프트 삭제"비활성으로 플래그가 기록, 따라서 대부분의 질의와 같은 일반적인 상황을 감안하면 해당 필드 자체에 색인을 위해 도움이 될 것이다, 0 = 삭제 등이 WHERE, 또는 그것은 다른 공통으로 결합되어야한다 다른 색인 필드를 검색?
해결법
-
==============================
1.아니.
아니.
시 검색 및 높은 선택 / 기수가 당신 인덱스 필드. 부울 필드의 기수는 거의 모든 테이블에 말소된다. 그것은 (AN 오, 너무 작은 금액으로) 당신의 쓰기가 느린 것 아무것도합니다.
모든 쿼리가 계정 소프트의 삭제로했다 경우 어쩌면 당신은 클러스터 된 인덱스의 첫 번째 필드 만들 것?
-
==============================
2.deleted_at의 DATETIME 컬럼에 대해 무엇입니까? 두 가지 이점이있다.
deleted_at의 DATETIME 컬럼에 대해 무엇입니까? 두 가지 이점이있다.
당신은 다음과 같이 할 수 쿼리 :
SELECT * FROM xyz WHERE deleted_at IS NULL
-
==============================
3.나는 특히 인덱스를 커버에 도움이 될 것 같아요.
나는 특히 인덱스를 커버에 도움이 될 것 같아요.
얼마나 / 조금 데이터 및 쿼리 코스에 의존이다.
당신은 실제 데이터와 데이터베이스에 데이터베이스 엔진에 의해 주어진 인덱스하지만 마지막 대답에 대한 모든 종류의 이론이있을 수 있습니다. 그리고 자주는 대답에 놀라게된다 (또는 어쩌면 내 이론이 너무 나쁜)
쿼리의 쿼리 계획을 검사하고 쿼리를 향상시킬 수 있는지 확인하거나 인덱스는 개선 될 수있는 경우. 이 인덱스를 변경하고 무엇이 차이를보고 매우 간단합니다
-
==============================
4.난 당신 (= 0 삭제) 뷰를 사용하고 있다면 도움이 될 생각하고 정기적으로이 뷰에서 쿼리된다.
난 당신 (= 0 삭제) 뷰를 사용하고 있다면 도움이 될 생각하고 정기적으로이 뷰에서 쿼리된다.
-
==============================
5.난, 당신의 부울 필드는 많은 경우에 그들에게 참조 할 것 같은 경우가 많은 부울 유형 필드, is_deleted처럼 is_hidden, is_really_deleted해야합니다 별도의 테이블, 예를 들어 DeletedPages, 또는 Specialpages | 여기를 가지고 이해 것이라고 생각 requires_higher_user 등, 다음이 걸릴 것이라고 그들을 얻을 합류했다.
난, 당신의 부울 필드는 많은 경우에 그들에게 참조 할 것 같은 경우가 많은 부울 유형 필드, is_deleted처럼 is_hidden, is_really_deleted해야합니다 별도의 테이블, 예를 들어 DeletedPages, 또는 Specialpages | 여기를 가지고 이해 것이라고 생각 requires_higher_user 등, 다음이 걸릴 것이라고 그들을 얻을 합류했다.
일반적으로이 테이블의 크기는 더 작 복용 코드의 가독성으로 특히까지, 조인 및 유지 관리에 관한 의해 당신은 몇 가지 이점을 얻을 것입니다. 그리고 이러한 유형의 쿼리에 대한 :
모든 페이지를 선택 곳 is_deleted = 1
그것은 다음과 같이 구현하기 위해 빠른 것입니다 :
select all pages where pages inner join DeletedPages on page.id=deleted_pages.page_id
난 당신이 적어도 해당 필드에 색인 작업을하기 위해 3의 기수가에 필드 필요하지만,이를 확인하시기 바랍니다 MySQL의 데이터베이스에 대한 어딘가에 읽을 생각합니다.
-
==============================
6.당신이 데이터베이스를 사용하는 경우 그 지원하는 비트 맵 인덱스 (Oracle과 같은), 다음 부울 열 것이다 훨씬 더 유용없는 이상에 같은 인덱스입니다.
당신이 데이터베이스를 사용하는 경우 그 지원하는 비트 맵 인덱스 (Oracle과 같은), 다음 부울 열 것이다 훨씬 더 유용없는 이상에 같은 인덱스입니다.
from https://stackoverflow.com/questions/1844991/indexing-boolean-fields by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 항목의 모든 조상을 얻는다 SQL 재귀 쿼리 (0) | 2020.07.23 |
---|---|
[SQL] sqlite3를 새로운 테이블로 복사 테이블 구조 (0) | 2020.07.23 |
[SQL] 간단한 날짜 시간 SQL 쿼리 (0) | 2020.07.23 |
[SQL] PostgreSQL의 두 날짜 사이의 결과를 얻기 (0) | 2020.07.23 |
[SQL] 조건이 동일하지 않은 SQL? (0) | 2020.07.23 |