无需在具有UNIQUE约束的列上创建索引,对吗?

Sur*_*gch 5 sql sqlite sqlite.swift

我有一张三列的桌子。

_id (primary key)    word (unique)     frequency
Run Code Online (Sandbox Code Playgroud)

SQLite.swift中,我像这样创建表

_id (primary key)    word (unique)     frequency
Run Code Online (Sandbox Code Playgroud)

我相信这将是SQLite语法

try db.run( userDictionary.create(ifNotExists: true) {t in
    t.column(wordId, primaryKey: true)
    t.column(word, unique: true)
    t.column(frequency, defaultValue: 1)
    })
Run Code Online (Sandbox Code Playgroud)

我准备在“单词”列上添加索引以提高性能,因为我将不得不对其进行频繁的查询。但随后,我在TutorialsPointIndexes教程中阅读了以下有趣的声明:

隐式索引:

隐式索引是在创建对象时由数据库服务器自动创建的索引。为主键约束和唯一约束自动创建索引。

因此,由于我已经在“ word”列中添加了唯一约束,因此无需执行其他任何操作。那是对的吗?我试图在SQLite文档中确认这一点,但找不到。

Har*_*rry 8

正确。UNIQUE创建一个索引。这就是大多数数据库实际执行它的方式。

假设他们没有创建索引,将会发生什么。实际上,他们将需要对每个插入进行全表扫描,这意味着性能将超出预期。