整理mysql資料庫所有索引的關係

2021-08-31 23:22:48 字數 952 閱讀 2063

一直以來不清楚資料庫引擎,聚集非聚集索引和其他索引之間的關係,特地求教了公司dba後,在此做記錄(以下只記錄mysql)

1.先說資料庫引擎,在mysql中常用的引擎有innodb和myisam,並且在mysql5.5還是5.6之後預設就是innodb了,所以我們現在建立表時幾乎都是用innodb,等下我們就來說說最常用的innodb引擎

2.然後我們來看看索引的方法,在mysql的innodb引擎下只能建立b樹的變種(b-tree、b+tree......)沒有hash索引,看到這可能會很奇怪,但就是這樣,mysql的hash索引是不支援直接指定的,在你建立完索引之後,如果mysql覺得這個索引使用hash會有更高效率的時候,會自動處理型別變為hash,也就是innodb做索引,只需也只能指定成btree

3.先弄清楚一點就是,資料庫的聚集索引只是一種資料儲存方式,而不是單獨的索引型別(唯一索引,文字索引等),聚簇索引的資料的物理存放順序與索引順序是一致的,即:只要索引是相鄰的,那麼對應的資料一定也是相鄰地存放在磁碟上的,也可以這樣理解,聚集索引就是新華字典中的拼音目錄,非聚集就是偏旁目錄,拼音目錄的順序是和字典中的順序是一致的,而偏旁目錄卻不是

以上都是對索引的了解,接下來才是進入關鍵內容,

在sqlserver中主鍵預設是設定為聚集索引,但是可以進行修改

其次,mssql,oracle都可以設定非主鍵索引為聚集索引

最後如果在mysql中,那麼你就可以說非主鍵索引,都是非聚集索引,只有主鍵才是聚集索引

說到這補充乙個知識點,在索引型別中為什麼組合索引要準從最左原則

組合索引,其實就是把多個單列索引拼接起來,比如組合id,name索引

那麼在索引樹中就存放的是:1-張三;2-李四這樣的資料,當然真實儲存沒有-

最左字首原則也就是,必須id=xx and name =xx才能用索引,你可以理解為組合索引的資料查詢時在索引樹中是使用類似於 

like '***%' 這樣的,那麼就必須滿足最左了

資料庫mysql索引 資料庫 mysql索引

mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...

mysql資料庫整理

mysql做分頁查詢 1 select from tablename limit 5,10 檢索記錄行6 10 2 為了檢索從某乙個偏移量到記錄集的結束所有的記錄行,可以指定第二個引數為 1 select from tablename limit 10,1 檢索記錄行11到末尾 3 如果只給定乙個引...

mysql更新索引庫 Mysql資料庫索引增刪改查

一.索引的作用 一般的應用系統,讀寫比例在10 1左右,而且插入操作和一般的更新操作很少出現效能問題,遇到最多的,也是最容易出問題的,還是一些複雜的查詢操作,所以查詢語句的優化顯然是重中之重。在資料量和訪問量不大的情況下,mysql訪問是非常快的,是否加索引對訪問影響不大。但是當資料量和訪問量劇增的...