[英]No need to create an index on a column with a UNIQUE constraint, right?
我有一個有三列的表。
_id (primary key) word (unique) frequency
在SQLite.swift中,我創建了這樣的表
try db.run( userDictionary.create(ifNotExists: true) {t in
t.column(wordId, primaryKey: true)
t.column(word, unique: true)
t.column(frequency, defaultValue: 1)
})
我相信SQLite的語法
CREATE TABLE "words" (
"_id" INTEGER PRIMARY KEY NOT NULL,
"word" TEXT UNIQUE NOT NULL,
"frequency" INTEGER DEFAULT 1
)
我正准備在“word”列上添加索引以加快性能,因為我將不得不對其進行頻繁查詢。 但后來我在TutorialsPoint的Indexes教程中閱讀了以下有趣的聲明:
隱含索引:
隱式索引是在創建對象時由數據庫服務器自動創建的索引。 為主鍵約束和唯一約束自動創建索引。
因此,由於我已經在“word”列中添加了一個唯一約束,因此無需執行任何其他操作。 那是對的嗎? 我試圖在SQLite文檔中確認這一點,但我找不到它。
正確。 UNIQUE創建一個索引。 這就是大多數數據庫實際執行它的方式。
想象一下,他們沒有創建索引,會發生什么。 他們真的需要對每個插件進行全表掃描,這意味着性能會超出窗口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.