SQLite - จัดทำดัชนีตามข้อ

ส่วนคำสั่ง "INDEXED BY index-name" ระบุว่าต้องใช้ดัชนีที่ตั้งชื่อเพื่อค้นหาค่าในตารางก่อนหน้า

หากไม่มีชื่อดัชนีหรือไม่สามารถใช้สำหรับแบบสอบถามได้การเตรียมคำสั่ง SQLite จะล้มเหลว

อนุประโยค "NOT INDEXED" ระบุว่าจะไม่มีการใช้ดัชนีเมื่อเข้าถึงตารางก่อนหน้านี้รวมถึงดัชนีโดยนัยที่สร้างขึ้นโดยข้อ จำกัด UNIQUE และ PRIMARY KEY

อย่างไรก็ตามยังสามารถใช้ INTEGER PRIMARY KEY เพื่อค้นหารายการได้แม้ว่าจะระบุ "NOT INDEXED" ก็ตาม

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์สำหรับคำสั่ง INDEXED BY และสามารถใช้กับคำสั่ง DELETE, UPDATE หรือ SELECT

SELECT|DELETE|UPDATE column1, column2...
INDEXED BY (index_name)
table_name
WHERE (CONDITION);

ตัวอย่าง

พิจารณาตารางCOMPANYเราจะสร้างดัชนีและใช้สำหรับการดำเนินการ INDEXED BY

sqlite> CREATE INDEX salary_index ON COMPANY(salary);
sqlite>

ตอนนี้เลือกข้อมูลจากตาราง COMPANY คุณสามารถใช้ INDEXED BY clause ดังต่อไปนี้ -

sqlite> SELECT * FROM COMPANY INDEXED BY salary_index WHERE salary > 5000;

สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
7           James       24          Houston     10000.0
2           Allen       25          Texas       15000.0
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
6           Kim         22          South-Hall  45000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0