PDA

View Full Version : CLUSTERED چیست؟



forodo
سه شنبه 26 آذر 1392, 20:48 عصر
سلام
برای فیلدی که پرایمری کی هستش وقتی CLUSTERED رو قرار می دهند چه معنی ای دارد؟
یعنی در کد زیر

CREATE TABLE Students
(
StudentsID INT NOT NULL IDENTITY(1,1) PRIMARY KEY CLUSTERED,
ClassID INT NOT NULL FOREIGN KEY REFERENCES Classes(ClassID),
CSID INT NOT NULL FOREIGN KEY REFERENCES ClassesStudents(CSID),
FirstName NVARCHAR(50) NULL DEFAULT 1,
CONSTRAINT Ali_Students UNIQUE(ClassID,CSID)
)

منظور از کد زیر چیست؟

StudentsID INT NOT NULL IDENTITY(1,1) PRIMARY KEY CLUSTERED

با تشکر

ali ghaemi
چهارشنبه 27 آذر 1392, 12:25 عصر
ذکر کردن یا نکردن کلمه Clustered در تعریف یک Primary Key ، تفاوتی رو ایجاد نمی کنه چون
وقتی شما روی یک جدول Primary key تعریف می کنید به طور پیش فرض از نوع Clustered Index در نظر گرفته می شه

جهت درک قطعه کد که مربوط به SQL AUTO INCREMENT است لطفا به منابع مرتبط به TSQL رجوع کنید که در اینترنت وجود داره ...

forodo
پنج شنبه 28 آذر 1392, 10:15 صبح
ذکر کردن یا نکردن کلمه Clustered در تعریف یک Primary Key ، تفاوتی رو ایجاد نمی کنه چون
وقتی شما روی یک جدول Primary key تعریف می کنید به طور پیش فرض از نوع Clustered Index در نظر گرفته می شه

جهت درک قطعه کد که مربوط به SQL AUTO INCREMENT است لطفا به منابع مرتبط به TSQL رجوع کنید که در اینترنت وجود داره ...
SQL AUTO INCREMENT رو می دونم یعنی همون که خود به خود یک شمارنده به ستون مورد نظر اضافه می کنه البته بستگی داره که خودمون انتخاب کنیم که چندتا چندتا اضافه کنه.
ولی Clustered رو نفهمیدم چیه و یه مشکل دیگه که به وجود اومد Clustered Index دیگه چیه؟؟؟
به طور پیش فرض Clustered Index در نظر گرفته می شه یعنی چی؟؟؟

ali ghaemi
پنج شنبه 28 آذر 1392, 20:10 عصر
به طور خیلی ساده Clustered Index می گه که رکورد های جدول من براساس چه فیلدی مرتب شود تا سریعتر بتونم مقدار مورد نظر رو در اون ستون پیدا کنم ، مثلا اگر شما نحوه چیدمان کلمات انگلیسی در یک دیکشنری انگلیسی رو در نظر بگیرید با کمترین جستجو می تونید لغت مورد نظر خودتون رو در میان هزاران لغت پیدا کنید Clustered Index هم تقریبا همین کار رو انجام می ده


به طور پیش فرض Clustered Index در نظر گرفته می شه یعنی چی؟؟؟ SQL Server مفهوم کلید اصلی رو بوسیله ساختار Clustered Index بر روی جدول شما اعمال می کنه

forodo
پنج شنبه 28 آذر 1392, 20:57 عصر
یعنی فقط می شه براساس یک فیلد اینکار رو انجام داد؟
یعنی اگر یک فیلد پرایمری کی داشته باشیم دیگه نمی تونیم روی فیلدهای دیگه جدول Clustered رو قرار بدهیم؟
من اینجوری فهمیدم که روی اون سطری که Clustered رو داشته باشیم خودش یک مرتب سازی رو انجام می دهد. یعنی مثلاً اگر جدولی داشته باشیم که پرایمری کی نداشته باشد و فیلد مثلاً نام را Clustered کنیم براساس فیلد نام خود اسکیوال مرتب می کند.
آیا حرف بالایی بنده درست می باشد؟

ali ghaemi
پنج شنبه 28 آذر 1392, 21:41 عصر
یعنی فقط می شه براساس یک فیلد اینکار رو انجام داد؟ تعریف یک Clustered Index می تونه شامل بیش از یک فیلد از یک جدول باشه اما برای هر جدول فقط یک Clustered Index قابل تعریف است

یعنی اگر یک فیلد پرایمری کی داشته باشیم دیگه نمی تونیم روی فیلدهای دیگه جدول Clustered رو قرار بدهیم؟ بله این برداشت درست است

من اینجوری فهمیدم که روی اون سطری که Clustered رو داشته باشیم خودش یک مرتب سازی رو انجام می دهد. یعنی مثلاً اگر جدولی داشته باشیم که پرایمری کی نداشته باشد و فیلد مثلاً نام را Clustered کنیم براساس فیلد نام خود اسکیوال مرتب می کند. بله برداشت شما درست است