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 จำนวนมาก
  • คอลัมน์ที่มีการจัดการบ่อยๆ