[1 차]는 무엇을 의미합니까?
SQL 설정 스크립트를 만들고 있는데 다른 사람의 스크립트를 예로 사용하고 있습니다. 다음은 스크립트의 예입니다.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[be_Categories](
[CategoryID] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_be_Categories_CategoryID] DEFAULT (newid()),
[CategoryName] [nvarchar](50) NULL,
[Description] [nvarchar](200) NULL,
[ParentID] [uniqueidentifier] NULL,
CONSTRAINT [PK_be_Categories] PRIMARY KEY CLUSTERED
(
[CategoryID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ON [PRIMARY] 명령의 기능을 아는 사람이 있습니까?
Microsoft SQL Server에서 데이터베이스를 작성할 때 여러 장소, 디렉토리 또는 디스크에 스토리지가 작성되는 여러 파일 그룹이있을 수 있습니다. 각 파일 그룹의 이름을 지정할 수 있습니다. PRIMARY 파일 그룹은 항상 생성되는 기본 그룹이므로 제공된 SQL은 PRIMARY 파일 그룹에 테이블을 생성합니다.
전체 구문 은 MSDN 을 참조하십시오 .
생성중인 객체가있는 파일 그룹을 나타냅니다. 따라서 기본 파일 그룹은 서버의 D : \ 드라이브에있을 수 있습니다. 그런 다음 Indexes라는 다른 파일 그룹을 만들 수 있습니다. 이 파일 그룹은 서버의 E : \ 드라이브에있을 수 있습니다.
ON [PRIMARY]는 "Primary"파일 그룹에 구조를 만듭니다. 이 경우 기본 키 인덱스와 테이블은 데이터베이스의 "기본"파일 그룹에 배치됩니다.
Mark S.가 자신의 게시물에서 언급 한 것에 대해 매우 중요한 메모를 추가합니다. 질문에 언급 된 특정 SQL 스크립트에서는 데이터 행과 인덱스 데이터 구조를 저장하기 위해 두 개의 다른 파일 그룹을 언급 할 수 없습니다.
그 이유는이 경우 생성되는 인덱스가 기본 키 열의 클러스터 된 인덱스이기 때문입니다. 클러스터 된 인덱스 데이터와 테이블의 데이터 행은 다른 파일 그룹에있을 수 없습니다 .
따라서 PRIMARY 및 SECONDARY와 같이 데이터베이스에 두 개의 파일 그룹이있는 경우 아래 언급 된 스크립트는 [SECONDARY]
테이블 데이터에 대해 다른 파일 그룹 ( )을 언급했지만 행 데이터와 클러스터 된 인덱스 데이터를 모두 PRIMARY 파일 그룹 자체에 저장합니다 . 더 흥미롭게도 스크립트는 성공적으로 실행됩니다 (두 개의 다른 파일 그룹을 제공했을 때 오류가 발생할 것으로 예상했을 때 : P). SQL Server는 비하인드 스토리를 자동으로 스마트하게 수행합니다.
CREATE TABLE [dbo].[be_Categories](
[CategoryID] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_be_Categories_CategoryID] DEFAULT (newid()),
[CategoryName] [nvarchar](50) NULL,
[Description] [nvarchar](200) NULL,
[ParentID] [uniqueidentifier] NULL,
CONSTRAINT [PK_be_Categories] PRIMARY KEY CLUSTERED
(
[CategoryID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [SECONDARY]
GO
참고 : 생성되는 인덱스가 본질적으로 클러스터되지 않은 경우에만 인덱스가 다른 파일 그룹에 상주 할 수 있습니다 .
비 클러스터형 인덱스를 생성하는 아래 스크립트 [SECONDARY]
는 테이블 데이터가 이미 [PRIMARY]
파일 그룹 에있는 경우 파일 그룹 에서 생성 됩니다.
CREATE NONCLUSTERED INDEX [IX_Categories] ON [dbo].[be_Categories]
(
[CategoryName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [Secondary]
GO
비 클러스터형 인덱스를 다른 파일 그룹에 저장하면 쿼리 성능을 향상시키는 방법에 대한 자세한 정보를 얻을 수 있습니다. 다음 은 그러한 링크 중 하나입니다.
참고 URL : https://stackoverflow.com/questions/2798213/what-does-on-primary-mean
'IT story' 카테고리의 다른 글
RewriteBase는 .htaccess에서 어떻게 작동합니까 (0) | 2020.04.24 |
---|---|
WPF의 페이지 대 창? (0) | 2020.04.24 |
Haskell :리스트, 배열, 벡터, 시퀀스 (0) | 2020.04.24 |
유사한 const 함수와 non-const 멤버 함수 간의 코드 복제를 어떻게 제거합니까? (0) | 2020.04.24 |
MySQL Workbench로 새로운 데이터베이스 생성 (0) | 2020.04.24 |