2011-03-24 2 views
1

나는 테이블 (책/미디어 데이터)에 수백만 개의 레코드를 가지고 있으며 ISBN 번호를 사용하여 테이블을 파티션하고 싶습니다. 그러나 숫자의 마지막 3 자리 숫자 만 사용하여 파티션을 나누고 싶습니다. 숫자가 제한됩니다에서 * 001 * 002SQL 2008에서 테이블을 분할 할 때 경계를 정의하는 데 와일드 카드를 사용하는 방법은 무엇입니까?

* 000 ... * 999

이 저장된 책/미디어 때문에 나는 깔끔한로 원하는 모든 데이터의 작은/더 유용 부분을 분할 . 그래서 select/inserts는 (필자에 따르면) 상대적으로 빠릅니다.

지금 문제는 마법사를 사용하여 함수를 정의 할 때 "경계"섹션에서 와일드 카드를 사용하는 방법을 파악할 수 없다는 것입니다.

이것이 가능합니까?

+2

"수백만 개"의 레코드 만 있습니다. 파티셔닝을 사용할 가치가 없습니다. – gbn

답변

2

수 없습니다. 이는 해시 분할로 SQL Server에서 지원되지 않습니다. 대신 수행 할 수있는 작업은 ISBN의 마지막 3 자리와 지속 된 계산 열에 의한 분할을 유지하는 계산 된 지속 열을 추가하는 것입니다.

참고로 SQL Server 2008 R2에 1000 개의 파티션을 추가하면 해당 테이블에서 쿼리 속도가 느려집니다. 파티셔닝은 더 나은 성능을위한 선택 사항이 아닙니다. 최상의 결과는 파티션되지 않은 테이블에서 회귀가없는 것입니다.

+0

"파티셔닝은 더 나은 성능을위한 선택 사항이 아닙니다." 응? 그래서 다른 파일 그룹에 다른 파티션을 배치하여 I/O가 병렬로 발생하면 성능이 저하 될 수 있습니까? 시스템이 쿼리 성능을 만족시킬 수 없다는 것을 알고있는 파티션 검색을 피하게하려면 어떻게해야합니까? –

+0

동일한 FG의 다른 파일을 다른 LUN에 배치하고 파티션보다 IO 배포 * 성능이 우수합니다. 그리고 분할 키에 의해 수행되는 모든 종류의 파티션 제거, 가장 왼쪽 키와 동일한 키를 가진 클러스터 된 인덱스가 더 잘 작동합니다. –

관련 문제