索引
索引(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 '蘭%';