비정규 화 된 인덱스 뷰로 정규화 된 테이블을 사용하는 것이 좋은 생각입니까?

StackOverflow https://stackoverflow.com/questions/191642

문제

나는 현재 새로운 앱을 건축하고 있으며, 읽기 비율이 높고 쓰기 비율을 높이고 있습니다. 현재 고용주에게는 성능상의 이유로 테이블에 대한 많은 비정규 데이터가 있습니다. 완전히 3NF 테이블을 가지고 인덱스 된 뷰를 사용하여 모든 비정규 화를 수행하는 것이 더 좋습니다. 테이블이나 뷰에 대해 쿼리를 실행해야합니까?

내가 관심있는 것들 중 일부의 예는 컬럼 자식 테이블의 집계입니다 (예 : 사용자 포스트 카운트가 어딘가에 저장된).

도움이 되었습니까?

해결책

일반적으로 여러 정규화 된 테이블에 매우 자주 액세스 해야하는 경우 비정규 화 뷰를 갖는 것이 좋습니다. 대부분의 경우 테이블에 대한 조인 및 쿼리를 사용하는 것보다 상당한 성능이 증가 할 것이며, 뷰 나 결합이 테이블의 일부에 대한 변경 사항에 대해 불가지론 적으로 작성 될 수 있기 때문에 일반적으로 유지 관리가 적을 수 없습니다. 사용하지 않습니다.

이든 모두 테이블은 세 번째 정상 형식이어야합니다. 또 다른 질문입니다. 대부분의 응용 프로그램에서 나는 답을 가지고 작업했습니다 대부분 테이블은 이런 식으로 정규화되어야하지만 예외가 있습니다. 예외를 제외할지 여부는 데이터 사용 방식과 관련이 있으며, 미래에 변경되지 않는 해당 사용에 대해 매우 확신 할 수 있는지 여부.

잘못된 방식으로 무언가를했기 때문에 나중에 돌아가서 다시 정규화해야한다는 것은 비용이 많이들 수 있지만, 사용하고 이해하기가 간단 해야하는 과도한 정상화 데이터는 필요한 것보다 더 복잡하고 유지하기 어려울 수 있습니다. 귀하의 마일리지가 다를 수 있습니다.

다른 팁

뷰를 사용하여 사용자에게 비정규 화 된 데이터를 제시하려는 경우 (그리고 SQL Server를 사용하는 경우) Schemabinding 절을 확인해야합니다. 보기가 스키마 인 경우 색인을 색인화 할 수 있으며 기본 테이블이 업데이트 될 때 인덱스가 업데이트됩니다. 이런 식으로 인덱스가 잘 설정되면 데이터를 찾는 사람들은 실제로 인덱스에서 선택할 수 있으므로 모든 쿼리에 대한 복잡한보기를 재건 할 필요는 없지만 사용자는 여전히 최신 정보를 볼 수 있습니다. 기본 테이블이 변경된 날짜.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top