NoSQL數(shù)據(jù)庫應用與實踐 課件 第7、8章 索引;排序和分頁_第1頁
NoSQL數(shù)據(jù)庫應用與實踐 課件 第7、8章 索引;排序和分頁_第2頁
NoSQL數(shù)據(jù)庫應用與實踐 課件 第7、8章 索引;排序和分頁_第3頁
NoSQL數(shù)據(jù)庫應用與實踐 課件 第7、8章 索引;排序和分頁_第4頁
NoSQL數(shù)據(jù)庫應用與實踐 課件 第7、8章 索引;排序和分頁_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

第七章索引單擊此處添加副標題演講者:數(shù)據(jù)庫中的索引01索引的優(yōu)缺點02其他索引04項目實踐05索引語法03目錄01數(shù)據(jù)庫中的索引數(shù)據(jù)庫中的索引索引是一種特殊的數(shù)據(jù)結(jié)構(gòu),它以易于遍歷的形式存儲了數(shù)據(jù)的部分內(nèi)容(如一個特定的字段或一組字段值)。索引會按一定規(guī)則對存儲值進行排序,并且索引的存儲位置在內(nèi)存中,因此從索引中檢索數(shù)據(jù)會非常快。如果沒有索引,MongoDB必須掃描集合中的每一個文檔,這種掃描的效率非常低,尤其是在數(shù)據(jù)量較大時。。02索引的優(yōu)缺點索引的優(yōu)點主要體現(xiàn)在以下方面:提高檢索速度優(yōu)化分組和排序使用優(yōu)化隱藏器然而,索引也存在一些缺點:創(chuàng)建和維護成本占用物理空間降低數(shù)據(jù)維護速度可能不適用所有情況索引的優(yōu)缺點03索引語法語法:db.集合名.createIndex(待創(chuàng)建索引的字段,[額外選項])參數(shù):待創(chuàng)建索引的字段:{鍵:1,…,鍵:-1}。說明:1表示升序,-1表示降序例如{age:1}表示創(chuàng)建age索引并按照升序的方式存儲。額外選項:設置索引的名稱或者唯一索引等等。02030401創(chuàng)建索引213刪除全部索引:db.集合名.dropIndexes()刪除指定索引:db.集合名.dropIndex(索引名)查看索引語法:db.集合名.getIndexes()。刪除索引04其他索引復合索引是對多個字段進行索引的索引類型。它允許按照多個字段的順序進行排序和查詢,這對于那些經(jīng)常需要同時根據(jù)多個字段進行查詢和排序的場景非常有用。創(chuàng)建復合索引時,需要指定一個包含多個字段的索引鍵,以及每個字段的排序方向(升序或降序)。語法如下:db.集合名.createIndex({鍵1:方式,鍵2:方式})12復合索引唯一索引用于確保索引字段的值是唯一的,即不存儲重復值。如果嘗試插入具有重復唯一索引字段值的文檔,MongoDB將返回一個錯誤。因此,在創(chuàng)建唯一索引之前,應確保數(shù)據(jù)集中不存在重復的值,或者準備好處理插入重復值時的錯誤。語法如下:db.集合名.createIndex(待添加索引的字段,{unique:true})唯一索引稀疏索引主要特點是只包含那些具有索引字段的文檔的條目,即使索引字段包含一個空值。簡單來說,稀疏索引會跳過那些索引鍵不存在的文檔,因此它并非包含所有的文檔,只針對有指定域的文檔創(chuàng)建索引表,如果某個文檔沒有該域,則不會插入到索引表中。語法如下:db.集合名.ensureIndex(待添加索引的字段,{sparse:true})12稀疏索引利用explain命令,可以很好地觀察系統(tǒng)如何使用索引來加快檢索,同時可以做針對性的性能優(yōu)化,語法如下:db.集合名.find().explain('executionStats')分析索引05項目實踐:使用bookshop數(shù)據(jù)練習索引操作查找具有給定書名的圖書的標題、出版商、出版年份和價格。查找具有給定作者姓名的書籍的標題、出版商、出版年份和價格。使用給定的關鍵字查找圖書的標題、出版商、出版年份和價格。查找給定年份的書籍的標題、出版商、出版年份和價格。03040201查詢要求:小結(jié)索引操作ensureIndex():創(chuàng)建索引dropIndex():刪除索引dropIndexes():刪除所有索引getIndexes():查看索引約束索引:索引為了快速查找,不是所有的情況都適合創(chuàng)建索引綜上:數(shù)據(jù)量比較大時更適合創(chuàng)建索引,數(shù)據(jù)量較小時沒有必要付出索引代價頻繁進行查找操作而不是更新刪除插入操作,此時更適合使用索引給數(shù)據(jù)中name添加索引命名為sx。02查看所有索引。03根據(jù)grade數(shù)據(jù)庫中class集合的數(shù)據(jù),完成下面操作:01刪除sx索引。04練習謝謝!第八章排序與分頁單擊此處添加副標題演講者:排序01聚合查詢02分頁實踐03項目實踐04目錄01排序sort()方法:鍵表示要排序的域或字段;在對應的值中1為升序,-1為降序。復合排序:復合排序特別適用于需要同時考慮多個字段以決定文檔順序的場景。例如,想要首先根據(jù)一個字段升序排序,然后在該字段值相同的情況下根據(jù)另一個字段降序排序,或者當?shù)谝慌判蝽椣嗤臅r候,按照第二排序項排序,以此類推。sort()排序limit(n)功能:顯示查找結(jié)果的前n條數(shù)據(jù),limit方法用于限制查詢結(jié)果返回的記錄條數(shù)。它接受一個數(shù)字參數(shù),該參數(shù)指定從MongoDB中讀取的記錄條數(shù)。skip(n)功能:跳過前n條顯示后面的內(nèi)容。skip方法則用于跳過指定數(shù)量的數(shù)據(jù)記錄。同樣,它也接受一個數(shù)字參數(shù),表示跳過的記錄數(shù)。參數(shù)值為0,表示不跳過任何文檔。綜合使用:語法:db.集合名.find().sort().skip(數(shù)字).limit(數(shù)字)Limit與Skip方法02分頁實踐分頁的計算頁數(shù)起始終止跳過數(shù)第1頁120第2頁342第3頁564第4頁786第5頁910803聚合查詢$group:將集合中的文檔分組,用于統(tǒng)計結(jié)果。01$match:過濾數(shù)據(jù),只輸出符合條件的文檔。02$project:字段投影。03$count:計數(shù)。04$sort:聚合數(shù)據(jù)進一步排序。05$skip:跳過指定的文檔數(shù)。06$limit:限制集合數(shù)據(jù)中返回的文檔數(shù)量。07常用管道1243$sum:表示計算總和($sum:1同count表示統(tǒng)計個數(shù))。$avg:表示計算平均值。$min:表示計算最小值。$max:表示計算最大值。1234常用表達式聚合管道將前一個聚合操作產(chǎn)生的結(jié)果,交給后一個聚合操作繼續(xù)使用。語法如下:db.collection.aggregate({聚合1},{聚合2},{聚合3}....)聚合管道的使用04項目實踐:使用常用聚合操作處理數(shù)據(jù)$match過濾數(shù)據(jù)01$project字段投影02$count計數(shù)03$limit和$skip04$sort聚合數(shù)據(jù)進一步排序05$group分組查詢06要求01sort({列:-1/1})排序02skip(數(shù)字)跳過指定數(shù)量03limit(數(shù)字)限制查詢條數(shù)04count()統(tǒng)計總數(shù)量小結(jié)練習先準備數(shù)據(jù):usetest3db.c1.insertOne({_id:1,name:"Tom",sex:"M",age:18})db.c1.insertOne({_id:2,name:"Bob",sex:"M",age:20})db.c1.insertOne({_id:3,name:"Jerry",sex:"F",age:31})db.c1.insertOne({_id:4,name:"Ma

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論