1.先別扯這麼多,先把資料結構搞清楚。
何為索引:方便快速查詢我們表的行記錄的間接標識。有了它,減少我們掃瞄表的範圍,快速定位
不用索引,我們找資料的時候,就需要和磁碟進行互動,一行一行檢索比對資料,磁碟io就是很大瓶頸
大致分類:btree索引, hash索引, 空間索引,全文索引
簡單介紹結構:乙個矮胖的二叉搜尋樹
分為b+tree和b-tree 沒什麼不同,只是+的是-的公升級版。資料結構一樣,只是儲存的內容有些區別。
b-tree:
do: 子節點儲存的是這個索引和資料,存的是完整的資料
bad:會造成節點大,樹的高度增加,查詢複雜,儲存容量變少,磁碟io增加
good:索引查詢時,找到索引,直接可以從子節點獲取記錄。
b+tree:
good: 由於頁的大小有限,16k,為了優化上述,增加索引的容量,減少磁碟io。少量的查詢,就能找到索引。
所有的葉子節點按順序鏈結成了鍊錶,因此可以方便的話進行範圍查詢
do: 根節點仍舊存索引,子節點存的是索引+記錄的資料位址,不是全部資料。這樣就提高了資料容量。
bad: 查詢索引時,需要經過標識,再去查詢行記錄資料
myisam引擎innodb引擎
都是使用的是b+tree的資料結構儲存索引檔案資料
(1)單節點能儲存更多資料,使得磁碟io次數更少。
(2)葉子節點形成有序鍊錶,便於執行範圍操作。
(3)聚集索引中,葉子節點的data直接包含資料;非聚集索引中,葉子節點儲存資料位址的指標
區別:
myiasm: 不支援事務,支援全文索引. 一般統計查詢多使用比較合適
innodb: 支援事務,行級鎖,5.6mysql以後支援全文索引。對事務可靠性要求高推薦
儲存結構:
索引檔案子節點存的是索引和記錄位址
因為索引檔案和資料檔案是分離的,所以是非聚簇索引
查詢的實現:
建立表會有這檔案: .myi 結尾 索引檔案 .myd結尾 資料檔案 .frm結尾 資料結構型別
select * from user where id = 1 查詢的時候,流程如下:
會先到索引檔案查詢有沒有id的索引樹,根據id索引樹找到id=1的字節點,從子節點傷獲取到資料記錄位址。
根據記錄位址,查詢資料檔案,獲取具體資料。
儲存結構:
索引檔案,預設主鍵索引樹存在,主鍵索引樹的葉子節點存放的是主鍵索引+資料資訊。
其他索引:葉子節點存的是索引和主鍵
索引和資料資訊是存在乙個檔案,聚集索引
查詢的實現:
建立表會有: user.ibd 索引檔案 user.frm資料結構型別
select * from user where name = 『吳磊』 查詢的時候,流程如下:
看有沒有索引樹是使用name建立的,有索引樹,就會找到對應葉子節點的索引name和主鍵值
用主鍵值索引樹去查詢對應葉子節點的索引和資料
我想做海綿寶寶 不想再為你哭泣
我想做海綿寶寶 不想再為你哭泣 如果我愛你上你是悲劇一場,那這悲劇該如果收場?俄 試 圖 解 剖 俄 捫 的 愛 情 可 發 現 什 麼 都 沒 有 長得美,就是資本.我忍不住想出聲來。深夜無盡的夜裡,觸碰不敢忘記的回憶。愛不能分配,只能很純粹,純粹的,只能給乙個誰。愛情如泡沫,一旦破碎,連空氣都沉...
不想再租房子了
2010 2 8 20 52 02 來深圳五年多了,租了5年多的房子,第一年剛從學校過來實習,在葉生那裡租房,租了4個月,存了點錢,把學費交了,畢業重新回到深圳,接著在毛姐那裡住,租了3年,存了一筆錢,娶了老婆 後來在餘老師那裡租房,到現在兩年多了,這兩年來,我自己買了房,老婆生了個兒子,我自己也到...
我不想做木偶
我不想做木偶 我是乙個有思想的人,我不是木偶,也不想做木偶。人生在世,如白駒之過隙。須臾之間,為了不白活於世,為了知道自己來這到這個世界上是幹什麼來了。我發誓我要把自己的精神永留於世。自從我選擇了這個職業,我發現了很多的樂趣。也讓我的生活十分的豐富與精彩。在工作中我會面臨各種各樣的問題。每當乙個專案...