- SQLite 教程
- SQLite - 首頁
- SQLite - 概述
- SQLite - 安裝
- SQLite - 命令
- SQLite - 語法
- SQLite - 資料型別
- SQLite - 建立資料庫
- SQLite - 附加資料庫
- SQLite - 分離資料庫
- SQLite - 建立表
- SQLite - 刪除表
- SQLite - INSERT 查詢
- SQLite - SELECT 查詢
- SQLite - 運算子
- SQLite - 表示式
- SQLite - WHERE 子句
- SQLite - AND & OR 子句
- SQLite - UPDATE 查詢
- SQLite - DELETE 查詢
- SQLite - LIKE 子句
- SQLite - GLOB 子句
- SQLite - LIMIT 子句
- SQLite - ORDER BY 子句
- SQLite - GROUP BY 子句
- SQLite - HAVING 子句
- SQLite - DISTINCT 關鍵字
- 高階 SQLite
- SQLite - PRAGMA
- SQLite - 約束
- SQLite - JOIN
- SQLite - UNION 子句
- SQLite - NULL 值
- SQLite - 別名語法
- SQLite - 觸發器
- SQLite - 索引
- SQLite - INDEXED BY 子句
- SQLite - ALTER 命令
- SQLite - TRUNCATE 命令
- SQLite - 檢視
- SQLite - 事務
- SQLite - 子查詢
- SQLite - AUTOINCREMENT
- SQLite - 注入
- SQLite - EXPLAIN
- SQLite - VACUUM
- SQLite - 日期和時間
- SQLite - 常用函式
- SQLite 有用資源
- SQLite - 快速指南
- SQLite - 有用資源
- SQLite - 討論
SQLite - 索引
索引是資料庫搜尋引擎可以使用的一種特殊的查詢表,可以加快資料檢索速度。簡單來說,索引是指指向表中資料的指標。資料庫中的索引與書籍後面的索引非常相似。
例如,如果您想引用書中討論某個特定主題的所有頁面,您首先會參考索引,索引按字母順序列出所有主題,然後會參考一個或多個具體的頁碼。
索引有助於加快 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 子句中經常使用兩列或多列作為篩選器,則組合索引是最佳選擇。
隱式索引
隱式索引是由資料庫伺服器在建立物件時自動建立的索引。主鍵約束和唯一約束會自動建立索引。
示例
以下是一個示例,我們將在COMPANY表中為 salary 列建立索引:
sqlite> CREATE INDEX salary_index ON COMPANY (salary);
現在,讓我們使用.indices命令列出 COMPANY 表中所有可用的索引,如下所示:
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 值的列。
- 經常被操作的列。