mysql索引概述
mysql索引的實現原理
使用索引的不足之處
結束語以下主要從mysql索引的介紹、如何使用、實現原理以及優缺點四個方面來闡述。
索引用於快速找出某個列中有意特定值的行,不使用索引,mysql必須從第一條記錄開始讀完整個表,直到找出相關的行。如果表中查詢的列有乙個索引,mysql能夠快速到達乙個位置去搜尋資料檔案,而不必檢視所有資料。
mysql索引可以大大提高mysql的檢索速度。
索引實際上是一張表,該錶儲存了主鍵和索引字段,並指向實體表的記錄。
乙個表中能夠建立多個索引,這些索引都會被存放到乙個索引檔案中。
單列索引,即乙個索引只包含單個列。
包含普通索引、唯一索引、主鍵索引。
組合索引,即乙個索引還包含多個列。
在表中的多個字段組合上建立的索引,只有在查詢條件中使用了這些欄位的左邊欄位時,索引才會被使用,使用組合索引時遵循最左字首集合。
首先對組合索引最左邊的字段的資料進行排序,在此基礎上,再對後面的字段進行排序。
第乙個欄位是絕對有序的,後面的字段就是無序的了。
就是在一堆文字中,通過其中的某個關鍵字等,就能找到該欄位所屬的記錄行。
一些詞在全文搜尋中會被忽略:
空間索引是一種輔助性的空間資料結構。普通的索引無法用於檢索點、線、麵等結構,而空間索引可以。
空間索引介於空間操作演算法和空間物件之間,它通過篩選作用,大量與特定空間操作無關的空間物件被排除,從而提高空間
操作的速度和效率。
需要用spatial key關鍵字定義。
什麼是雜湊索引?
雜湊索引用索引列的值計算該值的hashcode,然後在hashcode相應的位置儲存該值所在行資料的物理位置。
因為使用雜湊演算法,因此訪問速度非常快,但是乙個值只能對應乙個hashcode,而且是雜湊的分布方式,因此雜湊索引不支援範圍查詢和排序的功能。
儲存引擎的設計專家巧妙的利用了外存(磁碟)的儲存結構,資料庫的頁通常設定為作業系統頁的整數倍,因此索引結構的節點被設計為乙個頁的大小,然後利用外存的「預讀取」原則,每次讀取的時候,把整個節點的資料讀取到記憶體中,然後在記憶體中查詢。
已知記憶體的讀取速度是外存讀取i/o速度的幾百倍,那麼提公升查詢速度的關鍵就在於盡可能少的磁碟i/o,那麼可以知道,每個節點中的key個數越多,那麼樹的高度越小,需要i/o的次數越少,所以採用b+樹的資料結構。
儘管使用索引有諸多好處,但是過度使用索引帶來的缺點也是很明顯的:
所以說以下情況最好不要使用索引:
這篇部落格說起來還是有點草率,至於具體的實現細節會在以後進行補充,而關於b+樹也會單獨進行學習記錄。
說說mysql的四種索引型別
我們都知道 mysql索引的四種型別 主鍵索引 唯一索引 普通索引和全文索引。通過給字段新增索引可以提高資料的讀取速度,提高專案的併發能力和抗壓能力。索引優化時mysql中的一種優化方式。索引的作用相當於圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容,借助參考案例 www.dc3688.com ...
說說SQL SERVER的xml索引
這個我主要是對它的三種輔助索引有點迷惑,不過仔細地讀了幾遍sql聯機叢書之後,我基本上明白了吧!在這裡做個簡單的記述,如果以後還暈的時候,看看就應該能明白過來了。sql server的xml索引分為四種,主索引,還有三種輔助索引,path index,value index,property ind...
mysql 索引 手冊 MySQL 索引
mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...