การสร้างดัชนีแบบคลัสเตอร์และไม่ใช่คลัสเตอร์ใน SQL Server



ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา

ใน SQL Server มีดัชนีสองประเภท ดัชนีแบบคลัสเตอร์และไม่ใช่คลัสเตอร์ ทั้งดัชนีคลัสเตอร์และดัชนีที่ไม่ใช่คลัสเตอร์มีโครงสร้างทางกายภาพเหมือนกัน ยิ่งไปกว่านั้นทั้งสองจะถูกเก็บไว้ใน SQL Server เป็นโครงสร้าง B-Tree



ดัชนีคลัสเตอร์:

รายการคลัสเตอร์คือดัชนีชนิดหนึ่งที่จัดเรียงการจัดเก็บทางกายภาพของระเบียนในตารางใหม่ ภายใน SQL Server ดัชนีจะถูกใช้เพื่อเร่งการดำเนินการฐานข้อมูลซึ่งนำไปสู่ประสิทธิภาพสูง ตารางจึงสามารถมีดัชนีคลัสเตอร์ได้เพียงดัชนีเดียวซึ่งโดยปกติจะทำกับคีย์หลัก โหนดลีฟของดัชนีคลัสเตอร์ประกอบด้วย “ หน้าข้อมูล” ตารางสามารถมีดัชนีคลัสเตอร์ได้เพียงดัชนีเดียว



ให้เราสร้างดัชนีคลัสเตอร์เพื่อให้มีความเข้าใจที่ดีขึ้น ก่อนอื่นเราต้องสร้างฐานข้อมูล



การสร้างฐานข้อมูล

เพื่อสร้างฐานข้อมูล คลิกขวาที่ “ ฐานข้อมูล” ใน object explorer และเลือก “ ฐานข้อมูลใหม่” ตัวเลือก พิมพ์ชื่อฐานข้อมูลแล้วคลิกตกลง สร้างฐานข้อมูลแล้วดังแสดงในรูปด้านล่าง

การสร้างตารางโดยใช้มุมมองออกแบบ

ตอนนี้เราจะสร้างตารางชื่อ “ พนักงาน” ด้วยคีย์หลักโดยใช้มุมมองออกแบบ เราสามารถเห็นได้จากภาพด้านล่างที่เราได้กำหนดให้กับไฟล์ชื่อ“ ID” เป็นหลักและเราไม่ได้สร้างดัชนีใด ๆ บนตาราง



การสร้างตารางชื่อ“ พนักงาน” โดยมี ID เป็นคีย์หลัก

คุณยังสามารถสร้างตารางโดยเรียกใช้รหัสต่อไปนี้

ใช้ [ทดสอบ] ไปตั้งค่า ANSI_NULLS บน GO SET QUOTED_IDENTIFIER บน GO สร้างตาราง [dbo] [พนักงาน] ([ID] [int] IDENTITY (1,1) ไม่เป็นโมฆะ, [Dep_ID] [int] NULL, [ชื่อ] [ varchar] (200) NULL, [email] [varchar] (250) NULL, [city] [varchar] (250) NULL, [address] [varchar] (500) NULL, CONSTRAINT [Primary_Key_ID] PRIMARY KEY CLUSTERED ([ID ] ASC) ด้วย (PAD_INDEX = ปิด, STATISTICS_NORECOMPUTE = ปิด, IGNORE_DUP_KEY = ปิด, ALLOW_ROW_LOCKS = เปิด, ALLOW_PAGE_LOCKS = เปิด) บน [หลัก]) บน [หลัก] ไป

ผลลัพธ์จะเป็นดังนี้

การสร้างตารางชื่อ“ พนักงาน” โดยมี ID เป็นคีย์หลัก

โค้ดด้านบนได้สร้างตารางชื่อ “ พนักงาน” ด้วยฟิลด์ ID ตัวระบุที่ไม่ซ้ำกันเป็นคีย์หลัก ในตารางนี้ดัชนีคลัสเตอร์จะถูกสร้างขึ้นโดยอัตโนมัติในรหัสคอลัมน์เนื่องจากข้อ จำกัด ของคีย์หลัก หากคุณต้องการดูดัชนีทั้งหมดบนตารางให้เรียกใช้กระบวนงานที่เก็บไว้ “ sp_helpindex” รันโค้ดต่อไปนี้เพื่อดูดัชนีทั้งหมดบนตารางที่มีชื่อว่า “ พนักงาน”. กระบวนงานร้านค้านี้ใช้ชื่อตารางเป็นพารามิเตอร์อินพุต

ใช้การทดสอบ EXECUTE sp_helpindex Employee

ผลลัพธ์จะเป็นดังนี้

“ sp_helpindex” จะแสดงดัชนีทั้งหมดในตารางพนักงาน

อีกวิธีในการดูดัชนีตารางคือไปที่ “ ตาราง” ใน object explorer เลือกตารางและใช้จ่าย ในโฟลเดอร์ดัชนีคุณสามารถดูดัชนีทั้งหมดที่เกี่ยวข้องกับตารางเฉพาะดังที่แสดงในรูปด้านล่าง

การดูดัชนีทั้งหมดในตาราง

เนื่องจากนี่คือดัชนีคลัสเตอร์ดังนั้นลำดับตรรกะและทางกายภาพของดัชนีจะเหมือนกัน ซึ่งหมายความว่าถ้าระเบียนมี Id เป็น 3 ก็จะถูกเก็บไว้ในแถวที่สามของตาราง ในทำนองเดียวกันถ้าระเบียนที่ห้ามี id เป็น 6 ก็จะถูกเก็บไว้ใน 5ตำแหน่งของโต๊ะ เพื่อให้เข้าใจลำดับของระเบียนคุณต้องเรียกใช้สคริปต์ต่อไปนี้

USE [test] GO SET IDENTITY_INSERT [dbo]. [Employee] ON INSERT [dbo]. [Employee] ([ID], [Dep_ID], [Name], [email], [city], [address]) VALUES ( 8, 6, N'Humbaerto Acevedo