簡體   English   中英

無需在具有UNIQUE約束的列上創建索引,對吧?

[英]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”列上添加索引以加快性能,因為我將不得不對其進行頻繁查詢。 但后來我在TutorialsPointIndexes教程中閱讀了以下有趣的聲明:

隱含索引:

隱式索引是在創建對象時由數據庫服務器自動創建的索引。 為主鍵約束和唯一約束自動創建索引。

因此,由於我已經在“word”列中添加了一個唯一約束,因此無需執行任何其他操作。 那是對的嗎? 我試圖在SQLite文檔中確認這一點,但我找不到它。

正確。 UNIQUE創建一個索引。 這就是大多數數據庫實際執行它的方式。

想象一下,他們沒有創建索引,會發生什么。 他們真的需要對每個插件進行全表掃描,這意味着性能會超出窗口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM