2012-05-01 3 views
1

750k 레코드가있는 '거대한'테이블이 있습니다. 이 표의 일부 열을 변경해야합니다. 나는 다음과 같은 문장이 있습니다ALTER TABLE의 성능을 향상시키는 방법은 무엇입니까? [데이터 정렬 저하]

ALTER TABLE [MyTable] ALTER COLUMN [MyFirstField] NTEXT   NULL 
ALTER TABLE [MyTable] ALTER COLUMN [MySecondField] NVARCHAR (50) NULL 
  • MyFirstFieldNVARCHAR (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL

그것은 모든 레코드를 변환하는 꽤 많은 시간이 소요에서 변경 NTEXT COLLATE SQL_Latin1_General_CP1_CI_AS NULL

  • MySecondField에서 변경됩니다. 어떤 아이디어로이 과정을 강화할 수 있습니까?

  • +4

    750k 레코드가있는 테이블은 거대하지 않습니다. –

    +0

    @TimSchmelter, 나는 알고있다 :-) 그것이 왜 이렇게 오래 걸리는지 놀랍다 .- –

    +6

    주제를 약간 벗어나지 만 NTEXT 대신 NVARCHAR (MAX)를 사용하면 결국 NTEXT가 SQL 서버에서 제거 될 것이다. . http://msdn.microsoft.com/en-us/library/ms187993.aspx – GarethD

    답변

    1

    속도를 높일 수 없습니다.

    각 열에 대한 텍스트 값은 선택한 데이터 정렬에서 기본값으로 변환해야합니다. 이것은 시간이 걸립니다.

    +0

    자물쇠를 막을 방법이 없습니까? 아무것도 기록 할 필요가 없습니다 (제 생각 엔). –

    +2

    @ KeesC.Bakker - 이것은 로깅없이 내가 할 수있는 변화가 아닙니다. – Oded

    관련 문제