SQLite進階-16.索引


索引

索引(Index)是一種特殊的查找表,數據庫搜索引擎用來加快數據檢索。簡單地說,索引是一個指向表中數據的指針。
比如:在圖書館找書時,可以通過圖書編號、圖書分類等信息快速索引到你要找的書。

  • 索引雖然能夠加快SELECT查詢和WHERE子句的速度,但是他也會減慢使用UODATE和INSERT語句時的數據輸入。
  • 索引可以創建或刪除,不會影響數據。
  • 索引列可以指定單列或多列
  • 索引也可以是唯一的,與 UNIQUE 約束類似,在列上或列組合上防止重復條目。

創建索引

-- 語法
CREATE INDEX index_name ON table_name

-- 索引列可以指定單列或多列
-- 單列
CREATE INDEX index_name ON table_name(column_name);

-- 多列
CREATE INDEX index_name ON table_name (column1, column2);

-- 唯一索引
CREATE UNIQUE INDEX index_name ON table_name (column_name);

-- 隱式索引
-- SQLite數據庫會為表的主鍵自動創建一個索引,不需要自己主動去創建,稱為 隱式索引

查看索引

SELECT * FROM sqlite_master WHERE type='index';

刪除索引

DROP INDEX index_name;

創建索引的注意項

  • 索引不應該使用在較小的表上。
  • 索引不應該使用在有頻繁的大批量的更新或插入操作的表上。
  • 索引不應該使用在含有大量的 NULL 值的列上。
  • 索引不應該使用在頻繁操作的列上。

索引使用(Indexed By)

當創建索引后,在寫語句時,需要使用索引來查詢(修改、刪除)數據。

-- 語法
SELECT|UPDATE|DELETE column1, column2...
    INDEXED BY (index_name) table_name
    WHERE [condition];

-- 實例
-- 先創建索引name_index
CREATE INDEX name_index ON link_men(name);

-- 使用索引name_index查詢數據
SELECT * FROM link_men 
    INDEXED BY name_index
    WHERE name like '蘭%';


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM