SQLite - ดัชนี
ดัชนีคือตารางการค้นหาพิเศษที่เครื่องมือค้นหาฐานข้อมูลสามารถใช้เพื่อเร่งความเร็วในการดึงข้อมูล ใส่เพียงแค่ไฟล์indexเป็นตัวชี้ไปยังข้อมูลในตาราง ดัชนีในฐานข้อมูลคล้ายกับดัชนีที่อยู่ด้านหลังของหนังสือ
ตัวอย่างเช่นหากคุณต้องการอ้างอิงทุกหน้าในหนังสือที่กล่าวถึงหัวข้อใดหัวข้อหนึ่งก่อนอื่นคุณอ้างถึงดัชนีซึ่งแสดงรายการหัวข้อทั้งหมดตามลำดับตัวอักษรจากนั้นจะอ้างถึงหมายเลขหน้าหนึ่งหรือมากกว่านั้น
ดัชนีช่วยเร่งความเร็วของคำสั่ง SELECT และ WHERE แต่จะทำให้การป้อนข้อมูลช้าลงด้วยคำสั่ง UPDATE และ INSERT ดัชนีสามารถสร้างหรือลดลงได้โดยไม่มีผลกระทบต่อข้อมูล
การสร้างดัชนีเกี่ยวข้องกับคำสั่ง CREATE INDEX ซึ่งช่วยให้คุณสามารถตั้งชื่อดัชนีเพื่อระบุตารางและคอลัมน์หรือคอลัมน์ที่จะจัดทำดัชนีและเพื่อระบุว่าดัชนีอยู่ในลำดับจากน้อยไปมากหรือมากไปหาน้อย
ดัชนีสามารถไม่ซ้ำกันได้เช่นเดียวกับข้อ จำกัด UNIQUE เนื่องจากดัชนีป้องกันรายการที่ซ้ำกันในคอลัมน์หรือการรวมกันของคอลัมน์ที่มีดัชนี
คำสั่ง CREATE INDEX
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของ CREATE INDEX.
CREATE INDEX index_name ON table_name;
ดัชนีคอลัมน์เดียว
ดัชนีคอลัมน์เดียวคือดัชนีที่สร้างขึ้นจากคอลัมน์ในตารางเดียวเท่านั้น ไวยากรณ์พื้นฐานมีดังนี้ -
CREATE INDEX index_name
ON table_name (column_name);
ดัชนีเฉพาะ
ดัชนีเฉพาะไม่เพียง แต่ใช้เพื่อประสิทธิภาพเท่านั้น แต่ยังใช้เพื่อความสมบูรณ์ของข้อมูลด้วย ดัชนีที่ไม่ซ้ำกันไม่อนุญาตให้แทรกค่าที่ซ้ำกันลงในตาราง ไวยากรณ์พื้นฐานมีดังนี้ -
CREATE UNIQUE INDEX index_name
on table_name (column_name);
ดัชนีคอมโพสิต
ดัชนีผสมคือดัชนีในคอลัมน์สองคอลัมน์ขึ้นไปของตาราง ไวยากรณ์พื้นฐานมีดังนี้ -
CREATE INDEX index_name
on table_name (column1, column2);
ไม่ว่าจะสร้างดัชนีคอลัมน์เดียวหรือดัชนีผสมให้พิจารณาคอลัมน์ที่คุณอาจใช้บ่อยมากในส่วนคำสั่ง WHERE ของแบบสอบถามเป็นเงื่อนไขตัวกรอง
หากมีคอลัมน์เดียวที่ใช้ควรเลือกดัชนีคอลัมน์เดียว หากมีคอลัมน์สองคอลัมน์ขึ้นไปที่ใช้บ่อยในคำสั่ง WHERE เป็นตัวกรองดัชนีผสมจะเป็นตัวเลือกที่ดีที่สุด
ดัชนีโดยนัย
ดัชนีโดยนัยคือดัชนีที่เซิร์ฟเวอร์ฐานข้อมูลสร้างขึ้นโดยอัตโนมัติเมื่อสร้างวัตถุ ดัชนีจะถูกสร้างขึ้นโดยอัตโนมัติสำหรับข้อ จำกัด ของคีย์หลักและข้อ จำกัด เฉพาะ
Example
ต่อไปนี้เป็นตัวอย่างที่เราจะสร้างดัชนีในบริษัทตารางสำหรับคอลัมน์เงินเดือน -
sqlite> CREATE INDEX salary_index ON COMPANY (salary);
ตอนนี้ขอแสดงรายการดัชนีทั้งหมดที่มีอยู่ในตาราง COMPANY โดยใช้ .indices คำสั่งดังนี้ -
sqlite> .indices COMPANY
สิ่งนี้จะให้ผลลัพธ์ต่อไปนี้โดยที่sqlite_autoindex_COMPANY_1เป็นดัชนีโดยปริยายซึ่งถูกสร้างขึ้นเมื่อสร้างตารางเอง
salary_index
sqlite_autoindex_COMPANY_1
คุณสามารถแสดงฐานข้อมูลดัชนีทั้งหมดได้ดังนี้ -
sqlite> SELECT * FROM sqlite_master WHERE type = 'index';
คำสั่ง DROP INDEX
ดัชนีสามารถทิ้งได้โดยใช้ SQLite DROPคำสั่ง ควรใช้ความระมัดระวังเมื่อวางดัชนีเนื่องจากประสิทธิภาพอาจช้าลงหรือดีขึ้น
ต่อไปนี้เป็นไวยากรณ์พื้นฐานมีดังนี้ -
DROP INDEX index_name;
คุณสามารถใช้คำสั่งต่อไปนี้เพื่อลบดัชนีที่สร้างไว้ก่อนหน้านี้
sqlite> DROP INDEX salary_index;
เมื่อใดที่ควรหลีกเลี่ยงดัชนี
แม้ว่าดัชนีจะมีจุดมุ่งหมายเพื่อเพิ่มประสิทธิภาพของฐานข้อมูล แต่ก็มีบางครั้งที่ควรหลีกเลี่ยง แนวทางต่อไปนี้ระบุว่าเมื่อใดควรพิจารณาการใช้ดัชนีใหม่
ไม่ควรใช้ดัชนีใน -
- โต๊ะเล็ก ๆ
- ตารางที่มีการอัปเดตแบตช์จำนวนมากบ่อยครั้งหรือแทรกการดำเนินการ
- คอลัมน์ที่มีค่า NULL จำนวนมาก
- คอลัมน์ที่มีการจัดการบ่อยๆ