2012-10-23 4 views
0

나는 내가 업로드 할 다음과 같은 데이터가 있습니다는 SQL Server 테이블 구조

(Pair) (Date) (Time)  (Bid) (Ask) 
EurUsd 01/01/2012 18:04:01 1.55037 1.55137 
EurUsd 01/01/2012 18:04:20 1.55018 1.55118 
EurUsd 01/01/2012 18:04:22 1.55031 1.55131 
EurUsd 01/01/2012 18:04:36 1.55045 1.55145 
EurUsd 01/01/2012 18:04:40 1.55058 1.55158 
EurUsd 01/01/2012 18:04:40 1.5508 1.5518 

GbpUsd 01/01/2012 18:06:11 1.55097 1.55197 
GbpUsd 01/01/2012 18:06:22 1.55117 1.55217 
GbpUsd 01/01/2012 18:06:24 1.55128 1.55228 
GbpUsd 01/01/2012 18:06:38 1.55098 1.55198 

유형과 같습니다 데이터는 다음과 같습니다 NCHAR를 (6), 날짜, 시간, 진수, 진수.

불행히도 행이 몇 분 만에 고유 할 것이라고 보장 할 수 없습니다. 또한이 테이블에 데이터를 매일 추가 & 다른 쌍으로 추가 할 것입니다.

질문 1). 위의 데이터에 대해 PK를 설정하는 가장 좋은 방법은 무엇입니까? 난 그냥 "Id"라는 새로운 열을 설정해야한다고 가정하고 BigInt 유형의 "Is Identity"를 Yes로 설정 했습니까? 그런 다음 PK를 "Id"로 설정 하시겠습니까?

질문 2). "쌍", "날짜", "시간"을 기준으로 한 클러스터 된 인덱스?

질문 3). 내가 테이블에 "ID"열을 설정하면 데이터를 업로드하는 데 사용하는 sqlbulkcopy 작업에서 ColumnMapping이 필요하다고 가정합니다. 또는 "Is Identity"속성이 설정되면 데이터를 열에로드 할 수 없습니까?

감사합니다.

+1

2 번과 3 번 질문의 경우, 아래의 AnandPhadake가 설명을 제공합니다. 질문 1의 경우 PK로 자동 증분 ID 열을 수행하는 것이 옳습니다. –

답변

1
난 당신이 GUID (고유 식별자)를 사용하여 테이블에서 데이터를 자동으로 채 웁니다 NEWSEQUENTIALID()를 사용합니다. 수 있습니다 제안 PK가 (이 클러스터 된 인덱스 키가 될 것이다)

1.To 설정

2.I 추측 ("Pair", "Date", "Time") 집합에 클러스터 된 인덱스가 필요하지 않습니다. where 절에서 이러한 열 중 하나를 자주 사용하면 이러한 열에 대해 클러스터되지 않은 인덱스를 선호합니다.

3. sqlbulkcopy의 경우 테이블에 데이터를 삽입하려는 열만 매핑 할 수 있습니다.

+2

왜 ID가 아닌 GUID입니까? –

+0

bcos OP가 bigint에 대해 언급했습니다. 레코드 수가 많으면 GUID 그 밖의 ID는 괜찮습니다. – AnandPhadke

+0

왜 클러스터링되지 않은 인덱스 대 클러스터링 된 인덱스가 더 좋을지에 대해 의견을 말씀해 주시겠습니까? –