복붙노트

[SQL] 부울 필드 색인

SQL

부울 필드 색인

이것은 아마도 정말 바보 같은 질문이지만, 데이터베이스 테이블에 부울 필드를 색인에 많은 도움이 될 것입니까?

"소프트 삭제"비활성으로 플래그가 기록, 따라서 대부분의 질의와 같은 일반적인 상황을 감안하면 해당 필드 자체에 색인을 위해 도움이 될 것이다, 0 = 삭제 등이 WHERE, 또는 그것은 다른 공통으로 결합되어야한다 다른 색인 필드를 검색?

해결법

  1. ==============================

    1.아니.

    아니.

    시 검색 및 높은 선택 / 기수가 당신 인덱스 필드. 부울 필드의 기수는 거의 모든 테이블에 말소된다. 그것은 (AN 오, 너무 작은 금액으로) 당신의 쓰기가 느린 것 아무것도합니다.

    모든 쿼리가 계정 소프트의 삭제로했다 경우 어쩌면 당신은 클러스터 된 인덱스의 첫 번째 필드 만들 것?

  2. ==============================

    2.deleted_at의 DATETIME 컬럼에 대해 무엇입니까? 두 가지 이점이있다.

    deleted_at의 DATETIME 컬럼에 대해 무엇입니까? 두 가지 이점이있다.

    당신은 다음과 같이 할 수 쿼리 :

    SELECT * FROM xyz WHERE deleted_at IS NULL
    
  3. ==============================

    3.나는 특히 인덱스를 커버에 도움이 될 것 같아요.

    나는 특히 인덱스를 커버에 도움이 될 것 같아요.

    얼마나 / 조금 데이터 및 쿼리 코스에 의존이다.

    당신은 실제 데이터와 데이터베이스에 데이터베이스 엔진에 의해 주어진 인덱스하지만 마지막 대답에 대한 모든 종류의 이론이있을 수 있습니다. 그리고 자주는 대답에 놀라게된다 (또는 어쩌면 내 이론이 너무 나쁜)

    쿼리의 쿼리 계획을 검사하고 쿼리를 향상시킬 수 있는지 확인하거나 인덱스는 개선 될 수있는 경우. 이 인덱스를 변경하고 무엇이 차이를보고 매우 간단합니다

  4. ==============================

    4.난 당신 (= 0 삭제) 뷰를 사용하고 있다면 도움이 될 생각하고 정기적으로이 뷰에서 쿼리된다.

    난 당신 (= 0 삭제) 뷰를 사용하고 있다면 도움이 될 생각하고 정기적으로이 뷰에서 쿼리된다.

  5. ==============================

    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. ==============================

    6.당신이 데이터베이스를 사용하는 경우 그 지원하는 비트 맵 인덱스 (Oracle과 같은), 다음 부울 열 것이다 훨씬 더 유용없는 이상에 같은 인덱스입니다.

    당신이 데이터베이스를 사용하는 경우 그 지원하는 비트 맵 인덱스 (Oracle과 같은), 다음 부울 열 것이다 훨씬 더 유용없는 이상에 같은 인덱스입니다.

  7. from https://stackoverflow.com/questions/1844991/indexing-boolean-fields by cc-by-sa and MIT license