English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Der Index ist eine spezielle Suchtabelle, die der Datenbank-Suchmotor verwenden kann, um die Datenrecherche zu beschleunigen. Kurz gesagt, anindexist ein Zeiger auf die Daten in der Tabelle. Der Index in der Datenbank ist sehr ähnlich wie der Index am Ende eines Buches.
Zum Beispiel, wenn Sie alle Seiten eines Buches referenzieren möchten, die einen bestimmten Themenbereich behandeln, müssen Sie zunächst auf den Index verweisen, der alle Themen in alphabetischer Reihenfolge auflistet und dann eine oder mehrere spezifische Seitennummern referenzieren.
Der Index beschleunigt die Geschwindigkeit von SELECT-Abfragen und WHERE-Teilen, verlangsamt jedoch die Geschwindigkeit der Dateneingabe durch UPDATE- und INSERT-Anweisungen. Indexe können erstellt oder gelöscht werden, ohne die Daten zu beeinflussen.
Die Erstellung eines Indexes beinhaltet den CREATE INDEX-Befehl, der es Ihnen ermöglicht, den Index zu benennen, die Tabelle sowie die Spalten oder Spalten zu spezifizieren, die indexiert werden sollen, und anzuzeigen, ob der Index aufsteigend oder absteigend sortiert ist.
Der Index kann auch einzigartig sein, ähnlich wie die UNIQUE-Bedingung, da der Index doppelte Einträge in der Spalte oder Spaltenkombination verhindern kann.
以下是的基本语法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);
无论是创建单列索引还是复合索引,都要考虑column(s)到您可能在查询的WHERE子句中非常频繁地使用它作为过滤条件。
如果只使用一列,则应选择单列索引。如果WHERE子句中经常使用两个或更多列作为过滤器,则复合索引将是最佳选择。
隐式索引是创建对象时由数据库服务器自动创建的索引。自动为主键约束和唯一约束创建索引。
Example
以下是一个示例,我们将在COMPANY表中为薪水列创建索引-
sqlite> CREATE INDEX salary_index ON COMPANY (salary);
现在,让我们使用以下.indices命令列出COMPANY表中所有可用的索引:
sqlite> .indices COMPANY
这将产生以下结果,其中sqlite_autoindex_COMPANY_1是隐式索引,该隐式索引是在创建表本身时创建的。
salary_indexsqlite_autoindex_COMPANY_1
您可以列出所有索引数据库范围,如下所示:
sqlite> SELECT * FROM sqlite_master WHERE type = 'index';
可以使用SQLite DROP删除索引的命令。删除索引时应小心,因为性能可能会减慢或提高。
Hier ist die grundlegende Syntax wie folgt-
DROP INDEX index_name;
Sie können die folgenden Anweisungen verwenden, um zuvor erstellte Indizes zu löschen.
sqlite> DROP INDEX salary_index;
Obwohl Indizes darauf ausgelegt sind, die Leistung der Datenbank zu verbessern, sollten sie manchmal vermieden werden. Nachfolgende Regeln weisen an, wann eine Neubewertung der Verwendung von Indizes in Betracht gezogen werden sollte.
Indizes dürfen nicht verwendet werden-
Kleine Tabellen.
Tabellen mit häufigen, großen Batch-Update- oder Einfügeoperationen.
Spalten mit vielen NULL-Werten.
Häufig verwendete Spalten.