Mysql一些基本概念
1、索引的本質是:索引是幫助MySQL高效獲取資料的排好序的資料結構
(1) 索引的資料結構有:
2、MySQL的底層是B+樹,B+樹能進行水平擴充套件,高度僅僅為3就能儲存幾千萬的資料。
3、資料庫表中的每張表對應的MySQL本地data資料夾下都有幾個檔案(字首相同)
4、聚集(束)索引:葉節點包含了完整的資料記錄 。簡單講就是:索引和資料放在一起
5、MylSAM索引檔案和資料檔案是分離的(非聚集),非聚集索引=稀疏索引
InnoDB索引檔案和資料檔案不是分離的(聚集)
6、聚集索引比非聚集索引查詢速度快
7、主鍵用的uuid什麼意思?
整型所佔的記憶體比uuid小,查詢的速度比uuid快,因為比較整型比比較字串更加快, 而且比uuid節約更多的成本。MySQL一般佔用的是快取記憶體,比較貴。
8、Hash演算法在等值查詢的時候效率很高,如:where id=10,但是對於範圍查詢的效率遠不如 B+樹,如where id>10.因為hash地址是無序的,而B+樹的葉子節點是有序排列的。
9、B樹與B+ 樹的區別:
(1) B樹沒有冗餘索引,而B+樹的非葉子節點都是冗餘索引
(2) B樹的葉子節點之間是相互獨立的,沒有聯絡;而B+樹的葉子節點之間是個有序的雙向連結串列,每個葉子節點和前後節點都有關聯。
(3) B+樹把B樹的data資料全部移動到葉子節點,非葉子節點是沒有資料的。
(4) 高度相同的情況下,B+樹能儲存的資料遠遠超過B樹
10、聯合索引:
(1) 多個索引欄位如何比較大小:如:(“name”“age“”position”)
① 他會按照順序比較,先比較name,如果name比較好了,就不用看下面的欄位了,如果相等繼續比較下面的age欄位。
② 聯合索引的第一個欄位再整張表的範圍看是從左到右有序的,但是第二、三個欄位不一定有序。