indeks MongoDB
Indeks biasanya boleh meningkatkan kecekapan pertanyaan dengan hebat Tanpa indeks, MongoDB mesti mengimbas setiap fail dalam koleksi semasa membaca data dan memilih rekod yang memenuhi syarat pertanyaan.
Kecekapan pertanyaan mengimbas keseluruhan koleksi adalah sangat rendah Terutama apabila memproses sejumlah besar data, pertanyaan boleh mengambil masa berpuluh-puluh saat atau bahkan minit, yang sangat membawa maut kepada prestasi tapak web.
Indeks ialah struktur data khas. Indeks disimpan dalam koleksi data yang mudah dilalui dan dibaca Indeks ialah struktur yang menyusun nilai satu atau lebih lajur dalam jadual pangkalan data
kaedah ensureIndex()
MongoDB menggunakan kaedah ensureIndex() untuk mencipta indeks.
Sintaks
Format sintaks asas kaedah ensureIndex() adalah seperti berikut:
>db.COLLECTION_NAME.ensureIndex({KEY:1})
Nilai Kunci dalam sintaks ialah medan indeks yang anda ingin buat dan 1 menentukan untuk mencipta indeks dalam susunan menaik , jika anda ingin mencipta indeks dalam susunan menurun, nyatakan -1. Kaedah
Instance
>db.col.ensureIndex({"title":1}) >
ensureIndex() Anda juga boleh menyediakan untuk menggunakan berbilang medan untuk mencipta indeks (dipanggil indeks komposit dalam pangkalan data hubungan).
>db.col.ensureIndex({"title":1,"description":-1}) >
ensureIndex() menerima parameter pilihan Senarai parameter pilihan adalah seperti berikut:
Parameter | Type | Description |
---|---|---|
background | Boolean | 建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false。 |
unique | Boolean | 建立的索引是否唯一。指定为true创建唯一索引。默认值为false. |
name | string | 索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。 |
dropDups | Boolean | 在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false. |
sparse | Boolean | 对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false. |
expireAfterSeconds | integer | 指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。 |
v | index version | 索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。 |
weights | document | 索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。 |
default_language | string | 对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语 |
language_override | string | 对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language. |
Instance
Buat indeks di latar belakang:
db.values.ensureIndex({open: 1, close: 1}, {background: true})
Dengan menambah pilihan background:true semasa mencipta indeks, kerja penciptaan dilaksanakan di latar belakang