0

나는 여기의 대답이 아마 "그것이 의존한다"라고 생각한다. 그러나 나는 아직도 (만일 있다면) 엄지 손가락의 일반적인 규칙이 여기에 있는지 궁금해하고있다.datetime 열에 대한 인덱싱의 영향은 무엇입니까?

특정 형식의 "소프트 삭제"레코드를 사용하려면 deleted 열을 추가하여 (레일 예제를 제공하지만이 질문을 할 수있는 것은 아닙니다. 레일 별) : true 또는 false : 나는 deleted 열을 인덱싱하는 것은 오직 두 가지 값이 있기 때문에 상대적으로 싼 될 것이라고 상상이 경우

class SomeModel < ActiveRecord::Base 
    default_scope { where(:deleted => false) } 
end 

.

레코드가 삭제 된 경우 을 알아두면 유용 할 수 있습니다. 그래서 내가 대신 deleted_at으로 갈 수 :

class SomeModel < ActiveRecord::Base 
    default_scope { where(:deleted_at => nil) } 
end 

는 확실히 꽤 야생에서 이런 종류의 물건을 본 적이있다. 내 질문은 기본적으로 모든 레코드가 deleted_at *에 대해 다른 값을 가지므로 인덱싱이 실제로 훨씬 비쌉니다. 데이타베이스 내부에 대해서는 거의 알지 못합니다. (언젠가는 확실히 읽고 싶습니다.) 그래서 나는 이것이 아마도 순진한 질문이라는 것을 알고 있습니다.

그리고 아마도 데이터베이스에도 달려 있다는 것을 알고 있습니다. 문제가된다면 PostgreSQL에 주로 관심이 있습니다. 그러나 MySQL, Oracle 등을 알고 싶어하는 사람들이 있다고 생각합니다.

그래서? 좀 도와 줘?

* 나는 분명히 모든 레코드뿐만 아니라 id에 대해 다른 값을 가지고 있지만 그 색인에 대해 두 번 생각하지 않기 때문에 내가, 내가 대답을 실현 생각 그 문장을 입력한다. 그래서 날짜/시간 값은 같은 방식으로 작동합니까? 어쨌든, 난 내 직감 :)보다는 주제에 대한 실제 지식을 가진 사람에서 답변을 원합니다 인덱스의 크기는 주로 두 가지에 의해 영향을 받는다

답변

1

:

  1. 인덱스 키 길이 (각 키 값이 차지하는 바이트 수). (분명히) 인덱스 행의
  2. 수 게다가

, 당신은 일반적으로 영향을 미칠 수없는 관련된 오버 헤드가있다 (예를 들면, B-트리 자체, 기본 테이블 저장소에 대한 참조).

질문 답변 : 예, 바이너리 인덱스는 더 작고 빠르지 만 별개의 값 때문에가 아니라 한 바이너리 필드가 날짜보다 공간이 덜 필요하기 때문에 가능합니다.

당신은 SQL 색인에 대해 배우고 싶다면

는 특정 시간 범위에서 삭제 된 레코드를 식별 할 수있는 매우 자주 필요가 있다면 유용 할 것 deleted_at 값을 인덱싱 내 사이트 http://use-the-index-luke.com/

1

를 보라 . 그러한 능력이 필요하지 않은 경우 - 다른 수단으로 식별 된 레코드가 삭제 된 경우를 예를 들어 알고 싶을 경우 - 색인 생성을 할 가치가 없습니다.

물론 레코드가 삭제되면 다시 수정하지 않기를 기대할 수 있으므로 실제로는 updated_at를 삭제 타임 스탬프로 사용할 수 있습니다.

삭제되지 않은 레코드를 신속하게 식별하려면 RDBMS에서 지원하는 경우 부분 인덱스가 적합합니다. 구문은 시스템마다 다르지만 간단히 말해서 deleted_at가 null이 아닌 (또는 is_deleted => false) 행만 인덱스에 포함하려고합니다.

2

높이가 How database index works could be seen here 인 경우.

일반적으로 설계하는 인덱스 컬럼의 값이 거의 AKA 키 열을 forgien없는 반복 할 때

  • 트리 기반 색인 (기본 전략)
    높은 기수 컬럼에 사용된다. 남성 또는 여성 :
  • Bitmap indexes은 전통적으로 컬럼의 값이 deleted 질문 필드, 또는 두 가지 값을 포함 제기 gender의 고전 샘플처럼 매우 자주 반복 할 때 낮은 카디널리티 열이 잘 작업으로 간주되고있다.

비트 맵 인덱스의 한 가지 이점은 쿼리에 매우 효율적으로 응답하기 위해 비트 맵 인덱스의 여러 장점을 AND 연산하고 OR 연산 할 수 있다는 것입니다.

Working of indexes in postgresqlsome guidance on index strategies은 편리 할 수 ​​있습니다.