Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL Server

ดัชนี (Index) ใน SQL Server

บทความนี้อธิบายวิธีสร้าง เปลี่ยนชื่อ และลบดัชนีใน SQL Server

ดัชนี (Index) ใน SQL Server คืออะไร?

การจัดทำดัชนีเป็นวิธีที่ใช้ดึงระเบียนได้เร็วขึ้น ดัชนีชี้ไปยังแต่ละค่าที่ปรากฏในคอลัมน์ที่จัดทำดัชนี

สร้างดัชนี

ไวยากรณ์

CREATE [UNIQUE] [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 nhomtaptin | ON nhomtaptin_macdinh]
[FILESTREAM_ON {nhomtaptin | scheme_phandoan}];

UNIQUE: ทางเลือก ระบุว่าชุดค่าในคอลัมน์ดัชนีต้องเป็นเอกลักษณ์

CLUSTERED: ทางเลือก ระบุลำดับตรรกะที่กำหนดการจัดเรียงทางกายภาพของแถวในตาราง (คือลำดับระเบียนในตารางจัดเรียงตามฟิลด์ในดัชนี)

NONCLUSTERED: ทางเลือก ระบุลำดับตรรกะที่ไม่กำหนดการจัดเรียงทางกายภาพของแถวในตาราง

ten_chimuc: ชื่อดัชนีที่ต้องการสร้าง

ten_bang: ชื่อตารางหรือ View ที่ดัชนีถูกสร้างบน

cot1, ..., cot_n: คอลัมน์ที่สร้างดัชนี

ASC | DESC: ลำดับจัดเรียงค่าในคอลัมน์

INCLUDE (cot1, ..., cot_n): ทางเลือก คอลัมน์ที่ไม่ใช่คอลัมน์หลักเพื่อเพิ่มเข้าไปในระดับใบไม้ของดัชนี Nonclustered

WHERE dieu_kien: ทางเลือก เงื่อนไขกำหนดแถวไหนจะรวมในดัชนี

ตัวอย่างดัชนีใน SQL Server

CREATE INDEX danhba_chimuc
ON danhba (ho);

ในตัวอย่างนี้ เราสร้างดัชนีชื่อ danhba_chimuc บนตาราง danhba รวมฟิลด์ ho สามารถสร้างดัชนีมากกว่า 1 ฟิลด์ได้ ดังตัวอย่างด้านล่าง

CREATE INDEX danhba_chimuc
ON danhba (ho, ten);

ตัวอย่างนี้สร้างดัชนี danhba_chimuc ในตาราง danhba รวม 2 ฟิลด์ ho และ ten เนื่องจากไม่ระบุ ASC หรือ DESC สำหรับแต่ละฟิลด์ ดัชนีที่สร้างจะมีลำดับเพิ่มเป็นค่าเริ่มต้น หากต้องการลำดับลด ให้ทำดังนี้

CREATE INDEX danhba_chimuc
ON danhba (ho DESC, ten DESC);

คำสั่ง CREATE INDEX ด้านบนสร้างดัชนี danhba_chimuc ด้วยนามและชื่อจัดเรียงลำดับลด

ตัวอย่างดัชนี UNIQUE

CREATE UNIQUE INDEX danhba_chimucduynhat
ON danhba (ho, ten);

ตัวอย่างนี้สร้างดัชนีชื่อ danhba_chimucduynhat บนตาราง danhba รวมนามและชื่อ รับรองว่าชุดค่าของสองฟิลด์นี้เป็นเอกลักษณ์ สามารถสร้างดัชนี UNIQUE แบบ CLUSTERED ได้ เพื่อให้ลำดับทางกายภาพของแถวในตารางถูกกำหนดโดยลำดับตรรกะของดัชนี

CREATE UNIQUE CLUSTERED INDEX danhba_chimucduynhat
ON danhba (ho, ten);

ดัชนีที่สร้างใหม่ในตัวอย่างนี้มีชื่อ danhba_chimucduynhat ประกอบด้วย 2 ฟิลด์นามและชื่อ และเปลี่ยนลำดับจัดเรียงแถวในตารางตามดัชนี

เปลี่ยนชื่อดัชนีใน SQL Server

ไวยากรณ์

sp_rename 'tenbang.ten_chimuc_cu', 'ten_chimuc_moi', 'INDEX';

ten_bang: ชื่อตารางที่ดัชนีสร้างบน

ten_chimuc_cu: ชื่อดัชนีที่ต้องการเปลี่ยน

ten_chimuc_moi: ชื่อใหม่สำหรับดัชนี

ตัวอย่าง

sp_rename 'danhba.danhba_chimuc', 'danhba_chimuc_ten', 'INDEX';

ตัวอย่างนี้เปลี่ยนชื่อดัชนีในตาราง danhba จาก danhba_chimuc เป็น danhba_chimuc_ten

ลบดัชนีใน SQL Server

ไวยากรณ์

DROP INDEX tenbang.ten_chimuc;

ten_bang: ชื่อตารางที่ดัชนีสร้างบน

ten_chimuc_cu: ชื่อดัชนีที่ต้องการลบ

ตัวอย่าง

DROP INDEX danhba.danhba_chimuc;

ตัวอย่างนี้ลบดัชนีชื่อ danhba_chimuc