บทความนี้จะอธิบายวิธีสร้าง เปลี่ยนชื่อ และลบดัชนีใน SQL Server
ดัชนี - ดัชนีใน SQL Server คืออะไร
การจัดทำดัชนีเป็นวิธีที่ใช้เพื่อดึงข้อมูลระเบียนได้เร็วขึ้น ดัชนีชี้ไปที่แต่ละค่าที่ปรากฏในคอลัมน์ที่จัดทำดัชนี
สร้างดัชนี
ไวยากรณ์
CREATE [UNIQUE] [ CLUSTERED | NONCLUSTERED ] INDEX ten_chimuc
] [ CLUSTERED | NONCLUSTERED ] INDEX ten_chimuc
ON ten_bang ( cot1 [ASC | DESC ], . cot_n [ ASC | DESC ] )
[ INCLUDE ( cot1, . cot_n ) ]
[ WHERE dieu_kien ]
[ WITH ( PAD_INDEX = { ON | OFF }
| FILLFACTOR = fillfactor
| SORT_IN_TEMPDB = { ON | OFF }
| IGNORE_DUP_KEY = { ON | OFF }
| STATISTICS_NORECOMPUTE = { ON | OFF }
| STATISTICS_INCREMENTAL = { ON | OFF }
| DROP_EXISTING = { ON | OFF }
| ONLINE = { ON | OFF }
| ALLOW_ROW_LOCKS = { ON | OFF }
| ALLOW_PAGE_LOCKS = { ON | OFF }
| MAXDOP = so_toida
| DATA_COMPRESSION = { NONE | PAGE | ROW }
[ ON PARTITIONS ( { so | khoang } ]
[ ON scheme_phandoan ( cot )
| ON fnhomtaptin | ON nhomtaptin_macdinh ]
[ FILESTR
EAM_ON {nhomtaptin | scheme_phandoan }; scheme_phandoan};
UNIQUE
หรือระบุได้ว่าค่าผสมในคอลัมน์ดัชนีต้องไม่ซ้ำกัน
คลัสเตอร์
ระบุลำดับเชิงตรรกะที่กำหนดการจัดเรียงทางกายภาพของแถวในตาราง (เช่น ลำดับของระเบียนในตารางที่จัดเรียงตามเขตข้อมูลในดัชนี)
ไม่มีคลัสเตอร์
หรือระบุลำดับเชิงตรรกะที่ไม่ได้กำหนดการจัดแถวทางกายภาพของแถวในตาราง
ten_chimuc
ชื่อของดัชนีที่คุณต้องการสร้าง
ten_bang
ชื่อของตารางหรือ View ที่สร้างดัชนี
cot1, . cot_n
คอลัมน์ที่สร้างดัชนี
ASC | DESC
เรียงลำดับค่าในคอลัมน์
INCLUDE (cot1, . cot_n)
หรือ คอลัมน์ไม่ใช่คอลัมน์หลักที่จะเพิ่มไปยังระดับ leafy ของดัชนี Nonclustered
WHERE dieu_kien
ไม่บังคับ เป็นเงื่อนไขที่กำหนดแถวที่จะรวมในดัชนี
ON scheme_phanvung (cot)
หรือระบุพื้นที่พาร์ติชั่นที่กำหนดกลุ่มไฟล์ (กลุ่มไฟล์) ที่พาร์ติชั่นถูกแมป
ON nhomtaptin
ระบุได้ว่าจะสร้างดัชนีในกลุ่มไฟล์ที่ระบุหรือไม่
เปิด nhomtaptin_macdinh
ไม่บังคับ ระบุกลุ่มไฟล์เริ่มต้น
FILESTREAM_ON {nhomtaptin | khongigna_phanvung } khongigna_phanvung}
ระบุตำแหน่งของข้อมูล FILESTREAM สำหรับดัชนีแบบคลัสเตอร์หรือไม่ก็ได้
ตัวอย่างดัชนีใน SQL Server
CREATE INDEX danhba_chimuc
ON danhba (h
o);
ในตัวอย่างนี้ เราสร้างดัชนีชื่อ danhba_chimuc ในรายการ รวมถึงฟิลด์ที่เรียกว่าไอ สามารถสร้างดัชนีได้มากกว่า 1 ช่อง ดังตัวอย่างด้านล่าง
CREATE INDEX danhba_chimuc
ON da
(cough, ten);
ตัวอย่างนี้สร้างรายการของnameba_chimucในรายชื่อ ซึ่งรวมถึงสองฟิลด์ ไอ และสิบ เนื่องจากไม่ได้ระบุ ASC หรือ DESC สำหรับแต่ละรายการ ดัชนีที่สร้างโดยแต่ละฟิลด์ในลำดับเริ่มต้นจะเพิ่มขึ้น หากต้องการเรียงจากมากไปน้อย ให้ทำดังนี้
CREATE INDEX list name
ON danhba (ho DESC, te
n DESC);
คำสั่ง CREATE INDEX ด้านบนจะสร้างเฉพาะชื่อผู้ใช้และ _chimuc โดยเรียงชื่อและนามสกุลตามลำดับจากมากไปน้อย
ตัวอย่างดัชนีที่ไม่ซ้ำ
CREATE UNIQUE INDEX danhba_chimucduynhat
ON danhba (ho, ten);
ตัวอย่างนี้สร้างดัชนีชื่อ danh_chimuc บนรายชื่อที่มีชื่อและนามสกุล และทำให้แน่ใจว่าการรวมกันของสองฟิลด์นี้ไม่ซ้ำกัน เป็นไปได้ที่จะสร้างดัชนีเฉพาะของ Clustered เพื่อให้ลำดับทางกายภาพของแถวในตารางจะถูกตัดสินโดยลำดับตรรกะของดัชนี
CREATE UNIQUE CLUSTERED INDEX danhba_chimucduynhat
ON danh
three (ho, ten);
ดัชนีที่สร้างขึ้นใหม่ในตัวอย่างนี้มีชื่อ danhba_chimucduynhat ประกอบด้วยฟิลด์ชื่อและนามสกุลสองฟิลด์ และยังเปลี่ยนลำดับการจัดเรียงของแถวในตารางตามนั้น
เปลี่ยนชื่อดัชนีใน SQL Server
ไวยากรณ์
sp_rename
'tenbang.ten_chi_muc_cu', 'ten_chimuc_moi', 'INDEX';
ten_bang
ชื่อของตารางที่สร้างดัชนี
ten_chimuc_cu
ชื่อของดัชนีที่คุณต้องการเปลี่ยนชื่อ
ten_chimuc_moi
ชื่อใหม่สำหรับดัชนี
ตัวอย่างเช่น
sp_rename
'danhba.danhba_chimuc', 'danhba_chimuc_ten', 'INDEX';
ตัวอย่างนี้เปลี่ยนชื่อดัชนีในตาราง namba จาก danhba_chimuc เป็น listba_chimuc_ten
ลบดัชนีใน SQL Server
ไวยากรณ์
DROP INDEX tenbang.ten_chimuc;
ten_bang
ชื่อของตารางที่สร้างดัชนี
ten_chimuc_cu
ชื่อของดัชนีที่จะลบ
ตัวอย่างเช่น
DROP INDEX danhba.danhba_chimuc;
ตัวอย่างนี้จะลบดัชนีชื่อ ba_chimuc