文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


22.3.3.6 建立和刪除索引

索引用於快速尋找具有特定欄位值的文件。如果沒有索引,MySQL 必須從第一個文件開始,然後讀取整個集合以尋找相關欄位。集合越大,成本越高。如果集合很大,並且對特定欄位的查詢很常見,則請考慮在文件內的特定欄位上建立索引。

例如,下列查詢在 Population 欄位上建立索引後效能會更好

mysql-js> db.countryinfo.find("demographics.Population < 100")
...[output removed]
8 documents in set (0.00 sec)

createIndex() 方法會建立索引,您可以使用 JSON 文件來定義索引,該文件指定要使用的欄位。本節概述索引編製的高階概念。如需更多資訊,請參閱 集合索引編製

新增非唯一索引

若要建立非唯一索引,請將索引名稱和索引資訊傳遞至 createIndex() 方法。禁止重複的索引名稱。

以下範例指定一個名為 popul 的索引,該索引是針對 demographics 物件中的 Population 欄位所定義,並以 Integer 數值編製索引。最後一個參數表示欄位是否應要求 NOT NULL 限制。如果值為 false,則欄位可以包含 NULL 值。索引資訊是一個 JSON 文件,其中包含要包含在索引中的一或多個欄位的詳細資訊。每個欄位定義都必須包含欄位的完整文件路徑,並指定欄位的類型。

mysql-js> db.countryinfo.createIndex("popul", {fields:
[{field: '$.demographics.Population', type: 'INTEGER'}]})

在此,索引是使用整數數值建立的。還有其他選項可用,包括用於 GeoJSON 資料的選項。您也可以指定索引的類型,此處已省略,因為預設類型 index 適用。

新增唯一索引

若要建立唯一索引,請將索引名稱、索引定義和索引類型 unique 傳遞至 createIndex() 方法。此範例顯示在國家/地區名稱 ("Name") 上建立的唯一索引,這是 countryinfo 集合中另一個常見的索引欄位。在索引欄位描述中,"TEXT(40)" 代表要編製索引的字元數,"required": True 指定文件必須存在此欄位。

mysql-js> db.countryinfo.createIndex("name",
{"fields": [{"field": "$.Name", "type": "TEXT(40)", "required": true}], "unique": true})
刪除索引

若要刪除索引,請將要刪除的索引名稱傳遞至 dropIndex() 方法。例如,您可以如下刪除 popul 索引

mysql-js> db.countryinfo.dropIndex("popul")
相關資訊