OrientDB - ดัชนี
Index เป็นตัวชี้ที่ชี้ไปยังตำแหน่งของข้อมูลในฐานข้อมูล Indexingเป็นแนวคิดที่ใช้ในการค้นหาข้อมูลอย่างรวดเร็วโดยไม่ต้องค้นหาทุกระเบียนในฐานข้อมูล OrientDB รองรับอัลกอริทึมดัชนีสี่แบบและหลายประเภทภายในแต่ละประเภท
ดัชนีสี่ประเภท ได้แก่ -
ดัชนี SB-Tree
มีคุณสมบัติที่หลากหลายจากดัชนีประเภทอื่น ๆ ควรใช้สิ่งนี้สำหรับยูทิลิตี้ทั่วไป มีความทนทานทำธุรกรรมและรองรับการสืบค้นช่วง เป็นประเภทดัชนีเริ่มต้น ปลั๊กอินประเภทต่างๆที่รองรับอัลกอริทึมนี้คือ -
UNIQUE- ดัชนีเหล่านี้ไม่อนุญาตให้คีย์ซ้ำกัน สำหรับดัชนีคอมโพสิตหมายถึงเอกลักษณ์ของคีย์คอมโพสิต
NOTUNIQUE - ดัชนีเหล่านี้อนุญาตให้คีย์ซ้ำกัน
FULLTEXT- ดัชนีเหล่านี้ขึ้นอยู่กับคำเดียวของข้อความ คุณสามารถใช้ในแบบสอบถามผ่านไฟล์CONTAINSTEXT ตัวดำเนินการ
DICTIONARY - ดัชนีเหล่านี้คล้ายกับที่ใช้ UNIQUE แต่ในกรณีของคีย์ที่ซ้ำกันจะแทนที่ระเบียนที่มีอยู่ด้วยระเบียนใหม่
ดัชนีแฮช
ทำงานได้เร็วขึ้นและมีน้ำหนักเบาในการใช้งานดิสก์ มีความทนทานทำธุรกรรมได้ แต่ไม่รองรับการสืบค้นช่วง ทำงานเหมือน HASHMAP ซึ่งทำให้การค้นหาตรงเวลาเร็วขึ้นและใช้ทรัพยากรน้อยกว่าดัชนีประเภทอื่น ๆ ปลั๊กอินประเภทต่างๆที่รองรับอัลกอริทึมนี้คือ -
UNIQUE_HASH_INDEX- ดัชนีเหล่านี้ไม่อนุญาตให้คีย์ซ้ำกัน สำหรับดัชนีคอมโพสิตหมายถึงเอกลักษณ์ของคีย์คอมโพสิต
NOTUNIQUE_HASH_INDEX - ดัชนีเหล่านี้อนุญาตให้คีย์ซ้ำกัน
FULLTEXT_HASH_INDEX- ดัชนีเหล่านี้ขึ้นอยู่กับคำเดียวของข้อความ คุณสามารถใช้ในแบบสอบถามผ่านตัวดำเนินการ CONTAINSTEXT
DICTIONARY_HASH_INDEX - ดัชนีเหล่านี้คล้ายกับดัชนีที่ใช้ UNIQUE_HASH_INDEXแต่ในกรณีของคีย์ที่ซ้ำกันจะแทนที่ระเบียนที่มีอยู่ด้วยระเบียนใหม่
ดัชนีข้อความแบบเต็มของ Lucene
มีดัชนีข้อความเต็มที่ดี แต่ไม่สามารถใช้เพื่อจัดทำดัชนีประเภทอื่นได้ มีความทนทานทำธุรกรรมและรองรับการสืบค้นช่วง
Lucene Spatial Index
มีดัชนีเชิงพื้นที่ที่ดี แต่ไม่สามารถใช้เพื่อจัดทำดัชนีประเภทอื่นได้ มีความทนทานทำธุรกรรมและรองรับการสืบค้นช่วง
การสร้างดัชนี
สร้างดัชนีคือคำสั่งในการสร้างดัชนีบนสคีมาเฉพาะ
คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานในการสร้างดัชนี
CREATE INDEX <name> [ON <class-name> (prop-names)] <type> [<key-type>]
[METADATA {<metadata>}]
ต่อไปนี้เป็นรายละเอียดเกี่ยวกับตัวเลือกในไวยากรณ์ด้านบน
<name>- กำหนดชื่อตรรกะสำหรับดัชนี คุณยังสามารถใช้สัญกรณ์ <class.property> เพื่อสร้างดัชนีอัตโนมัติที่ผูกไว้กับคุณสมบัติสคีมา <class> ใช้คลาสของสกีมาและ <property> ใช้คุณสมบัติที่สร้างในคลาส
<class-name>- ระบุชื่อของคลาสที่คุณกำลังสร้างดัชนีอัตโนมัติเพื่อจัดทำดัชนี คลาสนี้ต้องมีอยู่ในฐานข้อมูล
<prop-names>- แสดงรายการคุณสมบัติที่คุณต้องการให้ดัชนีอัตโนมัติจัดทำดัชนี คุณสมบัติเหล่านี้ต้องมีอยู่แล้วในสคีมา
<type> - จัดเตรียมอัลกอริทึมและประเภทของดัชนีที่คุณต้องการสร้าง
<key-type> - ระบุประเภทคีย์ที่เป็นทางเลือกพร้อมดัชนีอัตโนมัติ
<metadata> - จัดเตรียมการแสดง JSON
ตัวอย่าง
ลองใช้แบบสอบถามต่อไปนี้เพื่อสร้างดัชนีอัตโนมัติที่เชื่อมโยงกับคุณสมบัติ 'ID' ของผู้ใช้ sales_user
orientdb> CREATE INDEX indexforID ON sales_user (id) UNIQUE
หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้
Creating index...
Index created successfully with 4 entries in 0.021000 sec(s)
ดัชนีการสืบค้น
คุณสามารถใช้คิวรีแบบเลือกเพื่อรับเรกคอร์ดในดัชนี
ลองใช้แบบสอบถามต่อไปนี้เพื่อดึงคีย์ของดัชนีชื่อ 'indexforId'
SELECT FROM INDEX:indexforId
หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้
----+------+----+-----
# |@CLASS|key |rid
----+------+----+-----
0 |null |1 |#11:7
1 |null |2 |#11:6
2 |null |3 |#11:5
3 |null |4 |#11:8
----+------+----+-----
ดร็อปดัชนี
หากคุณต้องการทิ้งดัชนีเฉพาะคุณสามารถใช้คำสั่งนี้ การดำเนินการนี้ไม่ได้ลบเรกคอร์ดที่เชื่อมโยง
คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานในการดร็อปดัชนี
DROP INDEX <name>
ที่ไหน <name> ระบุชื่อของดัชนีที่คุณต้องการวาง
ลองใช้คำค้นหาต่อไปนี้เพื่อดร็อปดัชนีชื่อ 'ID' ของผู้ใช้ sales_user
DROP INDEX sales_users.Id
หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้
Index dropped successfully