- 일반적인 방법
SELECT Count(*) FROM [TableName]
- 성능을 향상 시킬 수 있는 방법
SELECT rows FROM sysindexes WHERE id = OBJECT_ID('[TableName]') AND indid <>
100만건 DB에서 예상비용으로 1000배 이상의 효과를 보았음.
MS-SQL 7.0, 2000, 2005 모두 사용가능
- 일반적인 방법
SELECT Count(*) FROM [TableName]
- 성능을 향상 시킬 수 있는 방법
SELECT rows FROM sysindexes WHERE id = OBJECT_ID('[TableName]') AND indid <>
100만건 DB에서 예상비용으로 1000배 이상의 효과를 보았음.
MS-SQL 7.0, 2000, 2005 모두 사용가능
에러 : Cannot resolve collation conflict for equal to operation
컬럼명 COLLATE "Collation 타입"
ex)
SELECT * FROM Data
WHERE MID COLLATE SQL_Latin1_General_CP1_CI_AS in (
SELECT MID FROM Data
)
보통 테이블을 만들고, Primary Key로 자동증가형을 선택하여 작성 합니다.
그상태에서 각종 테스트를 하다보면, Key값은 계속증가 하죠
그래서 데이타를 다 지웠는데, 새로 입력한 값은 이전에 등록한 이후의 값으로 표시됩니다.
이런, 그래서, 테이블을 Drop 시키고 새로 만들면 괜찮기는 한데,
관계를 잡았던거라면, 관계풀고, Drop 한다음에 다시 관계를 잡자니
여간 불편한게 아니군요.
이럴때, DBCC CHECKIDENT (테이블명)을 하면, Key 값이 초기화 됩니다.
아래는 SQL 2000 도움말을 가져온것이구요.
소심하다거나, 깔끔하다거나, 높은완성도를 추구하는 개발자를 위한 팁입니다. ^_^
A. 필요에 따라 현재 ID 값 재설정
다음은 jobs 테이블의 현재 ID 값을 재설정하는 예제입니다.
USE pubs
GO
DBCC CHECKIDENT (jobs)
GO
B. 현재 ID 값 보고
다음은 jobs 테이블의 현재 ID 값을 보고하고, ID 값이 정확하지 않아도 그 값을 수정하지 않는 예제입니다.
USE pubs
GO
DBCC CHECKIDENT (jobs, NORESEED)
GO
C. 현재 ID 값을 30으로 설정
다음은 jobs 테이블의 현재 ID 값을 30으로 설정하는 예제입니다.
USE pubs
GO
DBCC CHECKIDENT (jobs, RESEED, 30)
GO
MS SQL의 버전에는 여러가지가 있었다.
내가 본건
MS SQL 7.0
MS SQL 2000 뿐이지만... 6.5도 있었다고 하고, 그 이전에도 있었을 것이다.
그런데, 컴퓨터 화면, 우측하단 트레이에서 오른쪽 마우스 버튼으로 버전을 확인해보면,
8.0 어쩌구 저쩌구 라고 나온다.
거참 이상하다... 내껀 분명히 2000 인데....
그럴때, 이걸 해본다.
1단계 : SELECT @@VERSION
이걸 하면 나의 경우에는 요렇게 나온다.
Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 4)
MS SQL의 버전과 함께, 운영체제의 버전이 나온다.
고로, SQL 2000은 내부적으로 버전 7.0 이후에 나온 8.0 이 맞는 다는 예기이고,
Windows 2000 여시 NT 4.0 이후에 나온 버전 5.0 이라는 것이다.
더불어, 운영체제에 설치된 서비스팩 버전도 함께 표시된다.
한단계 더 나가면,
2단계 : XP_MSVER 이라는 내장 스토어드 프로시저가 있다
exec xp_msver 만 사용하면, 전체 내용이 표시되고,
exec xp_msver ProductVersion 와 같이 항목 이름을 추가하면, 해당 항목만 표시된다.
Set @mInc = 1
While @mInc < 18
Begin
Set @mText = 'UPDATE Table SET file = ''' + cast(@mInc as nvarchar) + '.htm'' where ser = ' + cast(@mInc as nvarchar)
Exec sp_executesql @mText
Set @mInc = @mInc + 1
End
위에서 하려고 하는것은 업데이트문을 반복하기가 귀찮아서,
동적으로 쿼리를 만든 것이다.
중요한건 MS-SQL자체내장된 스토어드 프로시져인 sp_excutesql를 사용하면,
문자열로 조합한 만들어진 쿼리를 실행 할 수 있다.
위 쿼리에서 하나더 참고할 만한것은 '를 활용하는 것과 cast(@변수 as 변수형)를 활용하는 것이다.