mysql Mysql目前主要的幾種索引型別

2021-10-13 11:40:29 字數 1074 閱讀 5276

mysql目前主要有以下幾種索引型別:fulltext,hash,btree,rtree。

即為全文索引,目前只有myisam引擎支援。其可以在create table ,alter table ,create index 使用,不過目前只有 char、varchar ,text 列上可以建立全文索引。

全文索引並不是和myisam一起誕生的,它的出現是為了解決where name like 「%word%"這類針對文字的模糊查詢效率較低的問題。

由於hash的唯一(幾乎100%的唯一)及類似鍵值對的形式,很適合作為索引。

hash索引可以一次定位,不需要像樹形索引那樣逐層查詢,因此具有極高的效率。但是,這種高效是有條件的,即只在「=」和「in」條件下高效,對於範圍查詢、排序及組合索引仍然效率不高。

《索引型別之雜湊索引》

btree索引就是一種將索引值按一定的演算法,存入乙個樹形的資料結構中(二叉樹),每次查詢都是從樹的入口root開始,依次遍歷node,獲取leaf。這是mysql裡預設和最常用的索引型別。

《b樹與b+樹》

rtree在mysql很少使用,僅支援geometry資料型別,支援該型別的儲存引擎只有myisam、bdb、innodb、ndb、archive幾種。

相對於btree,rtree的優勢在於範圍查詢。

ps. 此段詳細內容見此片博文:mysql幾種索引型別的區別及適用情況

什麼是索引策略?注意與索引型別區分開,索引策略就是針對某個具體的索引型別提供多個方案,不同的方案各有優缺點,根據實際的需求,採用相應的最佳策略。

各種策略參見《普通索引和組合索引(復合索引)》

普通索引:僅加速查詢

唯一索引:加速查詢 + 列值唯一(可以有null)

主鍵索引:加速查詢 + 列值唯一(不可以有null)+ 表中只有乙個

組合索引:多列值組成乙個索引,專門用於組合搜尋,其效率大於索引合併

全文索引:對文字的內容進行分詞,進行搜尋

ps.索引合併,使用多個單列索引組合搜尋

覆蓋索引,select的資料列只用從索引中就能夠取得,不必讀取資料行,換句話說查詢列要被所建的索引覆蓋

參考:《mysql目前主要的幾種索引型別》

目前AI主要瓶頸

當我們將人類智慧型,和目前的人工智障對比時,常常舉的例子就是 現在機器學習依賴大資料,而人類的學習卻是相反的,依賴小資料 這個說法其實不盡準確。人類擁有太多的感知器官,無時無刻不接收著巨量的資料 就按人眼的解析度而言,目前幾乎沒有什麼實際的機器學習模型模型使用如此高畫質晰度的資料進行訓練的。我們觀察...

目前主要的網路試衣系統

今天在網上閒逛,偶然發現乙個介紹目前在網路比較流行的試衣系統的介紹及體驗,感受了一下確實感覺良好,在此做個記錄 二維網路試衣系統國內使用較多 如拍拍 face72 這種系統操作相對簡單,對服裝產品數位化的處理過程也比較容易,適合缺少專業人員的小型服裝企業。但是,二維系統由於只能平面展現服裝產品,就是...

程式設計經驗 060727 目前主要的錯誤

程式設計經驗 060727 目前主要的錯誤 仰望者 發表於 2006 7 27 17 37 29 首先談談我目前經常所處在的程式設計領域 j2ee平台下的企業應用程式設計,經常跟資料庫打交道。今後由於轉向框架的研究,元件的開發等等,可能對於今後的程式設計沒有較好的指導意義。但作為乙個階段性的總結,還...