久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何在MySQL中創建索引

124次閱讀
沒有評論

共計 1426 個字符,預計需要花費 4 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

本篇文章為大家展示了如何在 MySQL 中創建索引,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

什么是索引?

MySQL 官方對索引的定義為:索引 (Index) 是幫助 MySQL 高效獲取數據的數據結構。我們可以簡單理解為:快速查找排好序的一種數據結構。Mysql 索引主要有兩種結構:B+Tree 索引和 Hash 索引。我們平常所說的索引,如果沒有特別指明,一般都是指 B 樹結構組織的索引(B+Tree 索引)。索引如圖所示:

如何在 MySQL 中創建索引

最外層淺藍色磁盤塊 1 里有數據 17、35(深藍色)和指針 P1、P2、P3(黃色)。P1 指針表示小于 17 的磁盤塊,P2 是在 17-35 之間,P3 指向大于 35 的磁盤塊。真實數據存在于子葉節點也就是最底下的一層 3、5、9、10、13……非葉子節點不存儲真實的數據,只存儲指引搜索方向的數據項,如 17、35。

查找過程:例如搜索 28 數據項,首先加載磁盤塊 1 到內存中,發生一次 I /O,用二分查找確定在 P2 指針。接著發現 28 在 26 和 30 之間,通過 P2 指針的地址加載磁盤塊 3 到內存,發生第二次 I /O。用同樣的方式找到磁盤塊 8,發生第三次 I /O。

真實的情況是,上面 3 層的 B +Tree 可以表示上百萬的數據,上百萬的數據只發生了三次 I / O 而不是上百萬次 I /O,時間提升是巨大的。

數據表索引可以提高數據的檢索效率,也可以降低數據庫的 IO 成本,并且索引還可以降低數據庫的排序成本。排序分組操作主要消耗的就是 CPU 資源和內存,所以能夠在排序分組操作中好好的利用索引將會極大地降低 CPU 資源的消耗。下面我們將簡單的分析一下怎樣正確創建 MySQL 數據索引。

怎樣判斷是否需要創建索引?

1、某些字段需要頻繁用作查詢條件時需要為它建立索引

這個應該都知道,什么樣才是頻繁呢?綜合分析你執行的所有 SQL 語句。最好將他們一個個都列出來。然后分析,發現其中有些字段在大部分的 SQL 語句查詢時候都會用到,那么就果斷為他建立索引。

2、唯一性太差的字段不適合建立索引

什么是唯一性太差的字段?如狀態字段、類型字段。那些只存儲固定幾個值的字段,例如用戶登錄狀態、消息的 status 等。這個涉及到了索引掃描的特性。例如:通過索引查找鍵值為 A 和 B 的某些數據,通過 A 找到某條相符合的數據,這條數據在 X 頁上面,然后繼續掃描,又發現符合 A 的數據出現在了 Y 頁上面,那么存儲引擎就會丟棄 X 頁面的數據,然后存儲 Y 頁面上的數據,一直到查找完所有對應 A 的數據,然后查找 B 字段,發現 X 頁面上面又有對應 B 字段的數據,那么他就會再次掃描 X 頁面,等于 X 頁面就會被掃描 2 次甚至多次。以此類推,所以同一個數據頁可能會被多次重復的讀取,丟棄,在讀取,這無疑給存儲引擎極大地增加了 IO 的負擔。

3、更新太頻繁地字段不適合創建索引

當你為某個字段創建索引時候,如果再次更新這個字段數據時,數據庫就會自動更新他的索引,所以當這個字段更新太頻繁地時候那么就會不斷的更新索引,性能的影響可想而知。大概被檢索幾十次才會更新一次的字段才比較符合建立索引的規范。而如果一個字段同一個時間段內被更新多次,那么果斷不能為他建立索引。

4、不會出現在 where 條件中的字段不該建立索引

這個其實沒什么好說的,不會用作查詢條件的字段建立了索引也沒用。

上述內容就是如何在 MySQL 中創建索引,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注丸趣 TV 行業資訊頻道。

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計1426字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 修文县| 银川市| 孙吴县| 齐齐哈尔市| 瑞安市| 大名县| 新津县| 奇台县| 高淳县| 循化| 铁岭县| 莱阳市| 漯河市| 镇江市| 灵石县| 大厂| 砚山县| 肇庆市| 迁西县| 全州县| 太仆寺旗| 苍溪县| 龙胜| 梅州市| 河曲县| 邹城市| 岐山县| 民和| 饶河县| 灵璧县| 合川市| 绥德县| 土默特右旗| 荥阳市| 河池市| 龙海市| 湖口县| 木兰县| 万全县| 阜新| 滦南县|