บทความนี้อธิบายวิธีสร้าง เปลี่ยนชื่อ และลบดัชนีใน 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