GSI


http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=4004


AdventureWorksLT.msi 를 설치 하시고 DB를 연결하시면 됩니다.
Posted by gsi
:

심플한 쇼핑몰의 회원 테이블과 구매 테이블에 대한 샘플 입니다.
이 코드를 사용해서 일부 쿼리 문을 테스트 할 것입니다.

-- sqlDB 생성하기
use master
create database sqlDB
go

-- 테이블 생성
create table userTbl -- 사용자 테이블
(
 userID nchar(8) not null primary key, -- 사용자 아이디
 name nvarchar(10) not null, --이름
 birthYear int not null, --출생년도
 addr nchar(4) not null, --지역(경기, 서울, 경남, 전북 식으로 2자로)
 mobile1 nchar(3), -- 휴대폰의 국번
 mobile2 nchar(8), -- 휴대폰의 나머지 전화번호
 height smallint -- 신장
)
go

create table buyTbl-- 사용자 구매 테이블
(
 num int identity not null primary key, -- 순번
 userid nchar(8) not null
  foreign key references userTbl(userid), -- 아이디
 prodName nchar(6) not null, -- 물품명
 groupName nchar(4), -- 분류
 price int not null, -- 단가
 amount smallint not null -- 수량
)
go

insert into userTbl values(N'PJS', N'박지성', 1983, N'서울', N'011', N'1111111', 181)
insert into userTbl values(N'PJY', N'박주영', 1986, N'경기', N'011', N'2222222', 178)
insert into userTbl values(N'JJJ', N'조재진', 1986, N'충북', N'019', N'3333333', 179)
insert into userTbl values(N'LCS', N'이천수', 1983, N'인천', N'011', N'4444444', 179)
insert into userTbl values(N'AJH', N'안정환', 1979, N'강원', NULL, NULL, 182)
insert into userTbl values(N'KNI', N'김남일', 1977, N'경북', N'016', N'6666666', 183)
insert into userTbl values(N'LYP', N'이용표', 1983, N'전북', NULL, NULL, 178)
insert into userTbl values(N'SKH', N'설기현', 1978, N'서울', N'011', N'8888888', 182)
insert into userTbl values(N'SJK', N'송종국', 1979, N'경기', N'018', N'9999999', 178)
insert into userTbl values(N'CJC', N'최진철', 1975, N'제주', N'019', N'0000000', 185)
go

insert into buyTbl values(N'PJY', N'운동화', NULL, 30, 2)
insert into buyTbl values(N'PJY', N'노트북', N'전자', 1000, 1)
insert into buyTbl values(N'LCS', N'모니터', N'전자', 200, 1)
insert into buyTbl values(N'CJC', N'모니터', N'전자', 200, 5)
insert into buyTbl values(N'PJY', N'청바지', N'의류', 50, 3)
insert into buyTbl values(N'CJC', N'메모리', N'전자', 80, 10)
insert into buyTbl values(N'AJH', N'책',  N'서적', 15, 5)
insert into buyTbl values(N'SKH', N'책',  N'서적', 15, 2)
insert into buyTbl values(N'SKH', N'청바지', N'의류', 50, 1)
insert into buyTbl values(N'CJC', N'운동화', NULL, 30, 2)
insert into buyTbl values(N'SKH', N'책',  N'서적', 15, 1)
insert into buyTbl values(N'CJC', N'운동화', NULL, 30, 2)
go

select * from userTbl
select * from buyTbl

Posted by gsi
:

--확인방법
USE oms25_20070801
GO
-- 사전에 sysindexes에 있는 정보를 최신상태로 업데이트
DBCC UPDATEUSAGE(0)
GO

-- 결과 내용 (몇가지 최적화가 수행된다면, 아래와 같이 나온다.)
DBCC UPDATEUSAGE: 테이블 'TBL_BIZOBJ_STATUS'의 업데이트된 수(인덱스 'IX_TBL_BIZOBJ_STATUS_00', 파티션 1):
        DATA 페이지 (In-row Data): (12328)에서 (12377)(으)로 변경되었습니다.
        USED 페이지 (In-row Data): 12427개 페이지에서 12476개 페이지로 변경되었습니다.
        RSVD 페이지 (In-row Data): 12432개 페이지에서 12481개 페이지로 변경되었습니다.
DBCC UPDATEUSAGE: 테이블 'TBL_BIZOBJ_STATUS'의 업데이트된 수(인덱스 'IX_TBL_BIZOBJ_STATUS_01', 파티션 1):
        RSVD 페이지 (In-row Data): 1320개 페이지에서 1321개 페이지로 변경되었습니다.
...
DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오.

-- 결과 내용 (아무 이상이 없다면 아래와 같다.)
DBCC 실행이 완료되었습니다.
Posted by gsi
:

DB이름을 기준으로 아래의 쿼리를 실행 합니다.

-- 확인 방법
USE [DB 이름]
GO
DBCC SHOWFILESTATS
GO

--실행 결과


여기 나온 정보를 사용해서 아래의 쿼리를 만들어서 다시 실행합니다.

-- 확인 방법
select 513*8*8/1024. as Reserved, 400*8*8/1024. as Used, (400*8*8/1024.)/(513*8*8/1024.)*100.

-- 실행 결과

현재 파일 사이즈를 보면, 32MB 할당된 데이터 파일 사이즈이고, 25MB 실제 사용되고 있는 것을 확인할 있다.
할당된 영역 77% 정도 사용되고 있는 상태라고 보면 된다.

파일의 크기가 자동증가라고 본다면 증가 폭을 늘리던지 아니면 파일의 크기를 미리 늘려 놓는 것이 좋다.
Posted by gsi
:

GridView 컨트롤이 존재 하지만 여러개의 데이터를 읽어 올때
데이터가 많아 지면 속도가 느려 지기 마련인데요.
top을 이용하면 해당 개수 만큼 값을 가져 올수 있어서 편한듯 합니다.

.net 3.5 부터는 page를 컨트롤 하는 컨트롤이 존재 하기 때문에
이 것과 연동하면 더 좋은 효과를 기대할 수 있다고 보여 집니다.

기본 코드는 아래와 같습니다.

select top * 5 from test
where key_col not in
(
select top 0 key_col
from test
order by key_col desc
)
order by key_col desc

- top * 5 라는 것은 5개의 데이터를 가져 오도록 하는 구문입니다.
- 0 이곳은 0페이지 부터.. 즉 (현재 페이지 * 보여줄 항목개수, 0 * 5)
  가 되는 것입니다.

위의 쿼리를 실행하면 5개의 데이터를 가져옵니다.
Posted by gsi
: