정규화가 완료된 후에도 테이블을 인덱스해야합니까? 이것이 성능에 어떤 영향을 미치나요? 좋은 정규화 후에 어떤 식 으로든 성능에 영향을 미칩니 까?
기본 키와 외래 키가 이미있는 경우 일반적으로 어떤 열이 색인화됩니까?
데이터베이스를 정규화하는 것이 이미 효과적인 것처럼 보입니다. 그러나 인덱싱이 데이터베이스에 미치는 영향을 건너 뛸 수 있습니다. 쿼리를 사용할 때만 유효합니까? 이것이 어떻게 작동하고 데이터베이스를 개선합니까?
정규화가 완료된 후에도 테이블을 인덱스해야합니까? 이것이 성능에 어떤 영향을 미치나요? 좋은 정규화 후에 어떤 식 으로든 성능에 영향을 미칩니 까?
기본 키와 외래 키가 이미있는 경우 일반적으로 어떤 열이 색인화됩니까?
데이터베이스를 정규화하는 것이 이미 효과적인 것처럼 보입니다. 그러나 인덱싱이 데이터베이스에 미치는 영향을 건너 뛸 수 있습니다. 쿼리를 사용할 때만 유효합니까? 이것이 어떻게 작동하고 데이터베이스를 개선합니까?
답변:
예. 실제로 인덱스에 더 많은주의를 기울여야 할 수도 있습니다. 정규화는 최적의 스토리지 에 관한 것 입니다. 복잡한 조인을 가진 더 복잡한 쿼리가 사용되기 때문에 검색 속도 와 충돌하는 경우가 많습니다 . 빠른 검색 속도가 필요한 데이터베이스를 유지 관리하는 사람들은 정규화를 해제하거나 데이터를 약간 덜 표준화 된 구조로 정렬하여 검색을보다 쉽게 수행 할 수 있습니다.
예.
인덱스는 데이터 검색 속도를 높이는 방법입니다. 일부 쿼리는 기본 키에 의한 것이며 일반적으로 데이터베이스 엔진에 의해 암시 적으로 인덱싱되지만 다른 쿼리는 다른 열을 사용할 가능성이 있습니다. 일부 쿼리는 고유하지 않은 열로 검색하기 때문에 정규화 후에 기본 키가 될 수 없습니다. 아마도 그러한 열을 색인화해야 할 것입니다.
만들 인덱스를 아는 방법은 하나뿐입니다. 응용 프로그램의 모든 쿼리를 가지고 그들을 위해 대표적인 예 매개 변수를 찾아 데이터베이스 엔진이 자신의 쿼리 계획을 보여이 (모든 데이터베이스 엔진이 EXPLAIN
, EXPLAIN QUERY PLAN
또는 이와 유사한 명령, 그것은 다른 엔진에서 다르게이라고 함) 및 테스트는 얼마나 오래 그들이 걸릴. 느린 인덱스를 빠르게 만드는 인덱스를 만드는 것보다. 그리고 시도한 색인을 다시 삭제하는 것을 잊지 마십시오. 그러나 자원 낭비를 피하는 데 도움이되지 않았습니다.
인덱스는 일반적으로 가장 작은 테이블을 제외한 모든 테이블에 필요합니다. 거의 모든 외래 키를 인덱싱해야하며 FK를 설정한다고해서 인덱스가 있다는 의미는 아닙니다 (적어도 일부 데이터베이스에는 없지만 db 설명서를 확인하십시오). where 절에서 자주 결합하거나 사용하는 필드는 이점이있는 필드 (예 : 데이터에 특정 양의 가변성이 필요하므로 부울이 유리하지 않은 경우)와 인덱스 할 수있는 필드 인 경우 인덱스되어야합니다.
그러나 모든 인덱스는 선택 속도를 높이면서 삽입 \ 업데이트 \ 삭제 속도를 늦추므로 인덱스를 신중하게 선택하십시오.
인덱스는 데이터베이스에서 수용 가능한 성능에 중요합니다.