您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何進行Mysql索引優化,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
點擊上方“程序員小明”,選擇“星標”
今晚可以不加班!
簡單回顧一下Mysql的歷史,Mysql 是一個關系型數據庫管理系統,由瑞典 Mysql AB 公司開發,目前屬于 Oracle 公司。關系型數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。
Mysql 是開源的,所以你不需要支付額外的費用。
Mysql 支持大型的數據庫。可以處理擁有上千萬條記錄的大型數據庫。
Mysql 使用標準的 SQL 數據語言形式。
Mysql 可以運行于多個系統上,并且支持多種語言。
Mysql 是可以定制的,采用了 GPL 協議,你可以修改源碼來開發自己的 Mysql 系統。
索引是在MYSQL的存儲引擎層中實現的,而不是在服務層實現的。所以每種存儲引擎的索引都不一定完全相同,也不是所有的存儲引擎都支持所有的索引類型。MYSQL目前提供了一下4種索引。
基本的索引類型,大多數情況下都可以使用。
表示唯一的,不允許重復的索引,如果該字段信息保證不會重復,例如身份證號用作索引時,可設置為unique。Unique和Primary Key為列或列集合提供了唯一性的保證,Primary Key是擁有自動定義的Unique約束,但是每個表中可以有多個Unique約束,但是只能有一個Primary Key約束。
全文索引可以在varchar、char、text類型的列上創建。MyISAM支持全文索引,InnoDB在mysql5.6之后支持了全文索引。FULLTEXT 用于搜索很長一篇文章的時候,效果最好。用在比較短的文本,如果就一兩行字的,普通的 INDEX 也可以。
空間索引是對空間數據類型的字段建立的索引,MYSQL中的空間數據類型有4種,分別是GEOMETRY(幾何)、POINT(點)、LINESTRING(線)、POLYGON(多邊形)。MYSQL使用SPATIAL關鍵字進行擴展,使得能夠用于創建正規索引類型的語法創建空間索引。創建空間索引的列,必須將其聲明為NOT NULL,空間索引只能在存儲引擎為MYISAM的表中創建。
MySQL官方對索引的定義為:索引(Index)是幫助MySQL高效獲取數據的數據結構。提取句子主干,就可以得到索引的本質:索引是數據結構。
數據庫查詢是數據庫的最主要功能之一。我們都希望查詢數據的速度能盡可能的快,因此數據庫系統的設計者會從查詢算法的角度進行優化。
最基本的查詢算法當然是順序查找(linear search),這種復雜度為O(n)的算法在數據量很大時顯然是糟糕的,好在計算機科學的發展提供了很多更優秀的查找算法,例如二分查找(binary search)、二叉樹查找(binary tree search)等。
如果稍微分析一下會發現,每種查找算法都只能應用于特定的數據結構之上,例如二分查找要求被檢索數據有序,而二叉樹查找只能應用于二叉查找樹上,但是數據本身的組織結構不可能完全滿足各種數據結構(例如,理論上不可能同時將兩列都按順序進行組織),所以,在數據之外,數據庫系統還維護著滿足特定查找算法的數據結構,這些數據結構以某種方式引用(指向)數據,這樣就可以在這些數據結構上實現高級查找算法。這種數據結構,就是索引。
當你發現自己的查詢速度慢的時候,最快解決問題的方法就是使用索引。索引的使用是影響查詢速度的重要因素。在使用索引之前其他的優化查詢的動作純粹是浪費時間,只有合理地使用索引之后,才有必要考慮其他優化方式。
上述內容就是如何進行Mysql索引優化,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。