[SQL] ON [PRIMARY]은 무엇을 의미합니까?
SQLON [PRIMARY]은 무엇을 의미합니까?
나는 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] 명령이 무엇을 알고 있나요?
해결법
-
==============================
1.당신은 마이크로 소프트 SQL 서버에서 데이터베이스를 만들 때 스토리지가 여러 위치, 디렉토리 또는 디스크에 생성되는 여러 파일 그룹을 가질 수 있습니다. 각 파일 그룹 이름을 지정할 수 있습니다. 기본 파일 그룹은 항상 생성되는 기본 하나입니다, 당신이 제공 한 SQL이 PRIMARY 파일 그룹에서 테이블을 생성하므로.
당신은 마이크로 소프트 SQL 서버에서 데이터베이스를 만들 때 스토리지가 여러 위치, 디렉토리 또는 디스크에 생성되는 여러 파일 그룹을 가질 수 있습니다. 각 파일 그룹 이름을 지정할 수 있습니다. 기본 파일 그룹은 항상 생성되는 기본 하나입니다, 당신이 제공 한 SQL이 PRIMARY 파일 그룹에서 테이블을 생성하므로.
전체 구문에 대한 MSDN을 참조하십시오.
-
==============================
2.그것은 어떤 당신이에 상주을 만드는 객체를 파일 그룹을 의미한다. 그래서 주 파일 그룹은 D 드라이브에있을 수 있습니다 : \ 서버의. 그런 다음 인덱스라는 다른 파일 그룹을 만들 수 있습니다. 이 파일 그룹은 E 드라이브에 상주 할 수 있습니다 : \ 서버의.
그것은 어떤 당신이에 상주을 만드는 객체를 파일 그룹을 의미한다. 그래서 주 파일 그룹은 D 드라이브에있을 수 있습니다 : \ 서버의. 그런 다음 인덱스라는 다른 파일 그룹을 만들 수 있습니다. 이 파일 그룹은 E 드라이브에 상주 할 수 있습니다 : \ 서버의.
-
==============================
3.ON은 [PRIMARY]를 "주"파일 그룹의 구조를 생성합니다. 이 경우 기본 키 인덱스와 테이블은 데이터베이스 내에서 "차"파일 그룹에 배치됩니다.
ON은 [PRIMARY]를 "주"파일 그룹의 구조를 생성합니다. 이 경우 기본 키 인덱스와 테이블은 데이터베이스 내에서 "차"파일 그룹에 배치됩니다.
-
==============================
4.마크 S.는 자신의 게시물에서 언급 한 옵션에 매우 중요한 메모를 추가합니다. 질문에 언급 된 특정 SQL 스크립트에서는 데이터 행과 인덱스 데이터 구조를 저장하기위한 두 개의 서로 다른 파일 그룹은 말할 수 없다.
마크 S.는 자신의 게시물에서 언급 한 옵션에 매우 중요한 메모를 추가합니다. 질문에 언급 된 특정 SQL 스크립트에서는 데이터 행과 인덱스 데이터 구조를 저장하기위한 두 개의 서로 다른 파일 그룹은 말할 수 없다.
인덱스가 기본 키 열이 경우 클러스터 된 색인입니다 생성되는 때문이다 이유. 클러스터 된 인덱스 데이터와 테이블의 데이터 행은 다른 파일 그룹에있을 수 없다.
그래서 경우에 당신은 예를 들어, 데이터베이스에 두 개의 파일 그룹이 기본 및 보조 다음 아래에 언급 된 스크립트는 행 데이터와 나는 테이블 데이터에 대한 다른 파일 그룹 ([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
주 : 인덱스가 생성되는 경우에만 다른 파일 그룹에 상주 할 수 있습니다 귀하의 인덱스가 클러스터되지 않은 자연입니다.
클러스터되지 않은 인덱스를 작성하는 다음 스크립트는 테이블 데이터가 이미 [PRIMARY] 파일 그룹에있는 대신 [SECONDARY] 파일 그룹에 생성 얻을 것이다 :
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
당신은 당신의 쿼리의 성능이 향상 수있는 다른 파일 그룹에 클러스터되지 않은 인덱스를 저장하는 방법에 대한 자세한 정보를 얻을 수 있습니다. 여기에 하나 개의 링크입니다.
from https://stackoverflow.com/questions/2798213/what-does-on-primary-mean by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 번호로 주문에 대한 SQL - 1,2,3,4 등 대신 1,10,11,12 (0) | 2020.05.18 |
---|---|
[SQL] 사용 '='또는 LIKE는 SQL에서 문자열을 비교? (0) | 2020.05.18 |
[SQL] 문 수준 트리거 대 행 수준 트리거 (0) | 2020.05.18 |
[SQL] 그것은 DBMS의 맥락에서 정확히 BLOB 무엇입니까 (0) | 2020.05.18 |
[SQL] SQL ON DELETE CASCADE, 어떤 방법을 수행하는 삭제 발생? (0) | 2020.05.18 |