[SQL] SQL 서버 2008 : INSERT하지 존재하는 경우는, 고유의 열을 유지
SQLSQL 서버 2008 : INSERT하지 존재하는 경우는, 고유의 열을 유지
나는 SQL Server 2008을 사용하고 있습니다.
나는 독특한 확실하게하려는 테이블의 열 NVARCHAR (MAX)를 가지고있다. 표는 60 만 개 기록을 가지고 있으며, 5 만 개 기록에 의해 매일 성장한다.
현재 테이블에 항목을 추가하기 전에 나는 그것이 삽입이 테이블에 존재하는지 확인하지 않을 경우 I.
IF NOT EXISTS (SELECT * FROM Softs Where Title = 'example example example.')
BEGIN
INSERT INTO Softs (....)
VALUES (...)
END
나는 제목 열에서 인덱스가없는
최근에, 나는 테이블에 항목을 삽입 할 때 시간 제한을 받기 시작했다.
유니크을 유지하는 올바른 방법이 있을까요?
정말 내가 NVARCHAR에 NVARCHAR (MAX)를 변경할 수 있습니다 (450) 도움이 될 경우
해결법
-
==============================
1.그것은의 광기는 인덱스를하지.
그것은의 광기는 인덱스를하지.
그것은 도움이 될하지만 인덱스 키 길이는 900 바이트가 될 수 있습니다.
두번째의 가능성이 1 일하지만 1 삽입하기 전에 EXISTS 후에 실행하기 위해 존재하기 때문에, 그것은 가능성이 이미 중복이 있어요.
인덱스 생성은 당신에게, 이후이 방지됩니다.
그러나, 당신은 부하 오류를 얻을 수 있습니다.
높은 삽입 / 낮은 중복에 대한 나의 선호하는 방법은 JFDI 패턴입니다. 높은 동시
BEGIN TRY INSERT etc END TRY BEGIN CATCH IF ERROR_NUMBER() <> 2627 RAISERROR etc END CATCH
from https://stackoverflow.com/questions/3695863/sql-server-2008-insert-if-not-exits-maintain-unique-column by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] .NET 간단한 양식 AJAX와 JQUERY를 통해 제출 (0) | 2020.07.15 |
---|---|
[SQL] 어떻게 MS Access 데이터베이스 페이징을 + 검색하려면? (0) | 2020.07.15 |
[SQL] SQL 쉼표로 구분 컬럼 => 행에 다음 합계 합계? (0) | 2020.07.15 |
[SQL] 테이블 / 뷰에서 SELECT 절에서 n 번째 열을 선택하는 방법이 있나요 (0) | 2020.07.15 |
[SQL] Mysqli는 2 개의 다른 데이터베이스에서 테이블을 조인 (0) | 2020.07.15 |