تخفیف های داغ در جشنواره تابستانه توسینسو تخفیف های داغ در جشنواره تابستانه توسینسو
مانده تا پایان تخفیف
مشاهده دوره ها
0

تفاوت primary key با unique clustered index

با سلام و خسته نباشید خدمت شما

من در مورد clustered index اطلاعاتی دارم و خیلی هم در این مورد آموزش خواندم.

فقط این مورد را درست نمی دانم که تفاوت دو کوئری زیر در چیست :

USE [hassan]

GO

CREATE UNIQUE CLUSTERED INDEX [ClusteredIndex-20171002-083349] ON [dbo].[ReportsData]
(
	[ReportID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)

GO

و

CREATE TABLE [dbo].[ReportsData2](
	[ReportID] [int] NOT NULL,
	[ReportName] [varchar](100) NULL,
	[ReportNumber] [varchar](20) NULL,
 CONSTRAINT [PK_ReportsData1] PRIMARY KEY CLUSTERED 
(
	[ReportID] 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

در کوئری بالا ما یک primary key تعریف کرده ایم که به صورت clustered index هست تفاوت این با کوئری ماقبل در چیست؟

ممنون می شوم راهنمایی کنید

با تشکر

پرسیده شده در 1396/07/10 توسط

1 پاسخ

0

با سلام

من ی 10 سالی هست که دیگه برنامه نویسی کار نمی کنم اما تا جایی که یادمه :

primary key در سطح منطقی هستش و clustered index در سطح فیزیکی

وقتی شما قید primary key را بر روی یک ستون اعمال میکنید یعنی اینکه میخواهید که مقادیر این ستون یونیک باشند و sql server باید این قید رو هم در database فیزیکی شما هم پیادسازی کند که این کار رو با clustered index و nonclustered index انجام میده

به صورت پیشفرض وقتی شما قید primary key رو پیادسازی میکنید sql server در سطح فیزیکی اون رو بصورت clustered index پیادسازی میکنید و اگر شما بخواهید اون رو بصورت nonclustered index تعریف کنید کافیست جلوی قید primary key قید nonclustered رو هم اضافه کنید که در اینصورت Sql یک جدولی به نام heap برای شما میسازد

clustered index مستقیم بر روی داده های جدول اعمال می شود و سرعت خواند اطلاعات در آن به مراتب بالاتر است از nonclustered index

پاسخ در 1396/07/10 توسط

پاسخ شما