HSQLDB - 索引



資料庫索引是一種資料結構,它可以提高表中操作的速度。索引可以使用一個或多個列建立,為快速隨機查詢和有效排序訪問記錄提供基礎。

建立索引時,應考慮哪些列將用於編寫 SQL 查詢,並在這些列上建立一個或多個索引。

實際上,索引也是一種表格,它儲存主鍵或索引欄位以及指向實際表中每個記錄的指標。

使用者看不到索引。它們僅用於加速查詢,並將由資料庫搜尋引擎用於快速定位記錄。

在具有索引的表上,INSERT 和 UPDATE 語句需要更多時間,而 SELECT 語句在這些表上執行速度更快。原因是在插入或更新時,資料庫也需要插入或更新索引值。

簡單索引和唯一索引

您可以在表上建立一個唯一索引。唯一索引意味著兩行不能具有相同的索引值。以下是建立表索引的語法。

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2,...);

您可以使用一個或多個列來建立索引。例如,使用 tutorial_author 在 tutorials_tbl 上建立索引。

CREATE UNIQUE INDEX AUTHOR_INDEX
ON tutorials_tbl (tutorial_author)

您可以在表上建立簡單索引。只需從查詢中省略 UNIQUE 關鍵字即可建立簡單索引。簡單索引允許表中出現重複值。

如果要按降序排列列中的值,可以在列名後新增保留字 DESC。

CREATE UNIQUE INDEX AUTHOR_INDEX
ON tutorials_tbl (tutorial_author DESC)

ALTER 命令新增和刪除索引

有四種類型的語句用於向表中新增索引:

  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list) − 此語句新增主鍵,這意味著索引值必須唯一且不能為 NULL。

  • ALTER TABLE tbl_name ADD UNIQUE index_name (column_list) − 此語句建立一個索引,其值必須唯一(NULL 值除外,NULL 值可以多次出現)。

  • ALTER TABLE tbl_name ADD INDEX index_name (column_list) − 這將新增一個普通索引,其中任何值都可能出現多次。

  • ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list) − 這將建立一個特殊的 FULLTEXT 索引,用於文字搜尋。

以下是向現有表中新增索引的查詢。

ALTER TABLE testalter_tbl ADD INDEX (c);

您可以使用 DROP 子句以及 ALTER 命令刪除任何索引。以下是刪除上面建立的索引的查詢。

ALTER TABLE testalter_tbl DROP INDEX (c);

顯示索引資訊

您可以使用 SHOW INDEX 命令列出與表關聯的所有索引。垂直格式輸出(由 \G 指定)通常與此語句一起使用很有用,以避免長行換行。

以下是顯示關於表的索引資訊的通用語法。

SHOW INDEX FROM table_name\G
廣告